学习文档 from https://www.liaoxuefeng.com
时间戳:2019年3月6日23:38:55
Python 函数
一些常用函数
常用函数调用 abs() max() float() str() bool() hex() isinstance(x,(int,str))
定义函数
定义一个函数 使用关键字 def 例如:
def my_abs(x):
if x:
return x
else:
return -x
如果没有return语句,函数返回None
定义一个空函数
def nop():
pass
pass可以作为占位符,充当一个能代替一个将要完成的代码块
在命令行导入某个文件的某个函数 from 文件名 import 函数名
函数可以返回多个值,在return 语句中用 , 隔开 return返回的真是值其实是一个单一的tuple,tuple在return语句中可以省略括号,并且用多个参数来接受这个tuple
函数参数
Python有必选参数、默认参数、可变参数和关键字参数
必选参数、默认参数
def f1(x): #x为必选参数
print(x)
def f2(x,y = 1): #x为必选参数,y为默认参数,必选在前,默认在后
print(x,y)
def f3(x = 1,y = 2):
print(x,y)
#多个默认参数的调用
f3() # x = 1,y = 2
f3(3) # x = 3,y = 2
f3(3,4) # x = 3,y = 4
f3(y=2) # x = 1,y = 2
定义默认参数时,参数一定要是不可变参数
如果定义成可变参数会有一个大坑。如:
def f(x = []):
x.append('end')
print(x)
f() # 打印['end']
f() # 打印['end','end']
f() # 打印['end','end','end']
发生了什么?在定义函数 f 时,x参数被默认绑定的值 是 指向对象[] 的引用在以后使用默认值调用f时,永远都使用最初定义的那个引用
在Python中不变对象好像很重要的样子,还有多任务环境(是多线程吗)对这些对象处理
可变参数
即函数的参数个数可变
def f(*x):
for m in x:
print(m)
f(1) # print(1)
f(1,2,3) # print(1) print(2) print(3)
f(*[1,2,3,4,7]) #调用可变参数的函数,可以用前面标*的 list 或 tuple 传入
可变参数的调用,实质上会把传入的参数在底层包装成一个tuple做处理
关键字参数
即可为函数传入带有参数名的参数,并且参数数量可变,多应用于接口的扩展,让调用者可以提供更多信息
方法,用双*标识参数dict,传入dict的备份
def f(x,</