博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python基础进阶
阅读量:6818 次
发布时间:2019-06-26

本文共 4694 字,大约阅读时间需要 15 分钟。

  hot3.png

函数

函数就是完成特定功能的一个语句组,这组语句可以作为一个单位使用,并且给它取一个名字。

可以通过函数名在程序的不同地方多次执行(这通常叫函数调用)。

预定义函数

    可以直接使用

自定义函数

    用户自己编写

 

为什么使用函数

降低编程难度

-通常将一个复杂的大问题分解成一系列的小问题,然后将小问题划分成更小的问题,当问题细化为足够简单是,我们就可以分而治之。各个小问题解决了,大问题就迎刃而解了。

代码重用

-避免重复劳作,提供效率

 

 

函数的定义和调用

-def函数名([参数列表]): //定义

-函数名([参数列表]): //调用

 

 
#!/usr/bin/env python# _*_ coding:utf-8 _*_# @Time : 2017/11/30 23:52# @Author : name# @File : 8.pydef fun():sth = raw_input("Please input something: ")try:if type(int(sth)) == type(1):print("%s is a number" % sth)except ValueError:print("%s is not number" % sth)fun()

 

 

 

函数参数

形式参数和实际参数

-在定义函数时,函数名后面括号中的变量名称叫做“形式参数”,或者成为“形参”

-在调用函数时,函数名后面括号中的变量名称叫做“实际参数”,或者成为“实参”

 

#!/usr/bin/env python# _*_ coding:utf-8 _*_# @Time : 2017/12/1 21:41# @Author : name# @File : 9.pyimport sysdef isNum(s):    for i in s:        if i in '0123456789':            pass        else:            print("%s is not a number" %s)            sys.exit()    else:        print("%s is a number" %s)isNum(sys.argv[1])

 

 

练习

打印系统的所有的PID

要求从/proc读取

os.listdir()

#!/usr/bin/env python# _*_ coding:utf-8 _*_# @Time : 2017/12/1 21:41# @Author : name# @File : 9.pyimport osimport sysdef isNum(s):    for i in s:        if i in '0123456789':            pass        else:            #print("%s is not a number" %s)            #sys.exit()            break    else:        print(s)for p in os.listdir('/proc'):    isNum(p)

 

 

函数默认参数

缺省参数(默认参数)

def fun(x,y = 100):

    print(x, y)

fun(1,2)

fun(1)

 

 

函数变量

局部变量和全局变量

-python中的任何变量都有特定的作用域

-在函数中定义的变量一般只能在该函数内部使用,这些只能在程序的特定部分使用的变量,我们称之为局部变量

-在一个文件顶部定义的变量可以供文件中的任何函数调用,这些可以为整个程序所使用的变量成为全局变量

 

global #在函数中将变量声明成全局变量

locals() #在函数中打印函数中的变量,在函数外,打印所有变量

 

 

函数返回值

-函数被调用后会返回一个指定的值

-函数调用后默认返回None

-return返回值

-返回值可以是任意类型

-return执行后,函数终止

-return与print区别

 

 
#!/usr/bin/env python# _*_ coding:utf-8 _*_# @Time : 2017/12/1 21:52# @Author : name# @File : 10.pyimport osdef isNum(s):for i in s:if s.isdigit():return Truereturn Falsefor p in os.listdir('/proc'):if isNum(p):print(p)

 

 

多类型传值

def fun(x, y, z):

    return x + y + z

t1 = (1, 2, 3)

fun(*t1)

fun(*(2, 3, 4))

 

fic = {'x': 1, 'y': 3, 'z': 4}

fun(**dic)

 

 

冗余参数

向函数传元组和字典

处理多余实参

def fun(x, y, *args, **kwargs)

函数

递归调用

计算阶乘

普通方法:

-使用循环

 

#!/usr/bin/env python# _*_ coding:utf-8 _*_# @Time : 2017/12/3 19:16# @Author : name# @File : 12.pydef factorial(n):    sum = 1    for i in xrange(1, n+1):        sum *= i    return sumprint(factorial(5))

 

 

递归的注意事项

必须有最后的默认结果

    if n == 0

递归参数必须向默认结果收敛的:

    factorial(n-1)

 

#!/usr/bin/env python# _*_ coding:utf-8 _*_# @Time : 2017/12/3 20:00# @Author : name# @File : 13.pydef factorial(n):    if n == 0:        return 1    else :        return n * factorial(n-1)print(factorial(5))

 

小练习

打印目录下所有文件

#!/usr/bin/env python# _*_ coding:utf-8 _*_# @Time : 2017/12/3 20:04# @Author : name# @File : 14.pyimport osimport sysdef print_files(path):    lsdir = os.listdir(path)    dirs = [i for i in lsdir if os.path.isdir(os.path.join(path, i)) ]    files = [i for i in lsdir if os.path.isfile(os.path.join(path, i))]    if files:        for f in files:            print os.path.join(path, f)    if dirs:        for d in dirs:            print_files(os.path.join(path, d))print_files(sys.argv[1])

 

匿名函数

lambda函数是一种快速定义单行的最小函数,可以用在任何需要函数的地方。

def fun(x,y):

    return x * y

fun(2, 3)

 

r = lambda x,y: x * y

r(2, 3)

 

匿名函数的优点:

-1. 使用python写一些脚本是,使用lambda可以省去定义函数的过程,让代码更加精简。

-2. 对于一些抽象的,不会被别的地方再重复使用的函数,有时候函数起个名字也是个难题,使用lambda不需要考虑命名的问题。

-3. 使用lambda在某些时候让代码更容易理解。

 

lambda基础

lambda语句中,冒号前是参数,可以有多个,逗号隔开,冒号右边是返回值。

lambda语句构建的其实是一个函数对象。

 

def  add (x, y):

    return x + y

sum = reduce(add,[1, 2, 3])

 

reduce(lambda x, y : x + y, range(1,4))

 

内置函数

可以查看python的内置函数的使用方法

 

 

例子

返回数字的绝对值

    abc(-12)

取列表最大最小值

max([1, 2, 3, 4, 5])

min([1, 2, 3, 4, 5])

 

常用函数

绝对值,最大最小值

abs() #绝对值

max() #最大值

min() #最小值

 

len() #序列长度

divmod() #

pow()

round()

callable()

type()

isnstance

cmp()

range()

xrange()

 

类型转换函数

int()

long()

float()

comples()

str()

list()

tuple()

hex() #16进制

oct() #8进制

chr()

ord()

eval()

 

字符串处理函数(字符串的方法)

str.capitalize()

str.replace()

str.split()

str.join()

string模块

 

 

序列处理函数

len() #取序列的长度

max() #取序列的最大值

min() #取序列的最小值

 

filter()

zip()

map()

reduce()

 

使用lambda

filter(lambda x:x % 2 == 0, range(10))

    [0, 2, 4, 6, 8]

map(lambda x, y: x * y, range(5), range(5))

    [0, 1, 4, 9, 16]

reduce(lambda x, y: x + y, range(1,101))

    5050

 

列表表达式

[i * 2 + 10 for i in range(10)]

    [10, 12, 14, 16, 18, 20, 22, 24, 26, 28]

[i for i in range(10) if i%3 == 0]

    [0, 3, 6, 9]

 

 

 

模块使用

模块是python组织代码的基本方式

一个python脚本可以单独运行,也可以导入到另一个脚本中运行,当脚本被导入运行时,我们将其称为模块(module)

所有的.py文件都可以作为一个模块导入

 

模块名与脚本的文件名相同

例如我们编写了一些名为hello.py的脚本,则可以在另一个脚本中用import hello语句来导入它

 

python的模块可以按目录组织为包

创建一个包的步骤:

-创建一个名字为包名的目录

-在该目录下创建一个__init__.py文件

-根据需要,在该目录下存放脚本文件或已编译的扩展及子包

-import pack.mi,pack.m2,pack.m3

 

 

python path

sys.path

export PYTHONPATH

 

 

转载于:https://my.oschina.net/peizh/blog/1583226

你可能感兴趣的文章
找工作的程序员必懂的Linux
查看>>
JavaScript的浏览器兼容性问题小结。
查看>>
Oracle Hint的用法
查看>>
Postfix邮件系统
查看>>
《编写可读代码的艺术》读书文摘--第一部分 表面层次的改进
查看>>
使用Nodejs创建基本的网站 Microblog--《Node.js开发指南》 3
查看>>
网管工作是否值得做下去?
查看>>
神行者PD10-adb push逃脱ro权限
查看>>
JPA(四)之实体关系一对一
查看>>
如何使用羊驼自动生成缩略图的功能。
查看>>
定制化Azure站点Java运行环境(1)
查看>>
inotify用法简介及结合rsync实现主机间的文件实时同步
查看>>
php 判断手机登陆
查看>>
git 问题
查看>>
Fedora18设置终端快捷键 和 桌面快捷方式
查看>>
取消NavigationBar左右两边的空隙
查看>>
修改symfony sfDoctrineGuardPlugin验证密码的方法
查看>>
mysql 创建日期列之timestamp
查看>>
Visual Studio统计有效代码行数
查看>>
Qt连接Oracle数据库常见问题
查看>>