定义函数的三种形式- 无参数函数,通常无返回值

- 有参数函数,函数的功能执行依赖外部传入的参数,有参数函数通常有返回值

def add(x,y):

sum=x+y

return sum

- 空函数

def insert():

pass

函数返回值- 返回值为None

没写return

return 啥也不接

return None

- 一个返回值

def foo():

return x

- 多个返回值

return 值1,值2,值3,值4 --->返回结果组成tuple

调用函数def dog():

print('dog')

def cat(cat):

print('===>',cat)

dog()

cat('加菲')

调用函数的三种方式:- dog() #直接调用

- 调用函数的表达式形式

def add(x,y):

sum=x+y

return res

res=add(3,5) * 1000

- 把函数调用当中另外一个函数的参数

res=max(max(3,5),7)

函数的参数:- 形参 定义函数时的参数名称

- 实参 调用函数时传入的参数

详细区分函数的参数- 位置参数

def foo(x,y,z):

print(x,y,z)

foo(1,2,3) 实参位置和形参位置一一对应

- 关键字参数:

def foo(x,y,z)

print(x,y,z)

foo(z=3,y=1,x=4)

foo(1,z=3,y=5)

注意点:

1. 关键字实参必须在未知实参后面

2. 不能重复对一个形参传值

- 默认参数

def reg(name,age,sex='male'):

print(name,age,sex)

注意点:

1. 定义函数时,默认参数必须在非默认参数之后

2. 默认参数在定义阶段智能赋值一次

3. 默认参数通常定义成不可变类型

- 可变长参数,

1. *会把溢出的按位置定义的实参都接受,以元组形式赋值给args

def foo(x,y,*args):
print(x,y)
print(args)
foo(1,2,3,4,5,6)

输出:

1 2
(3,4,5,6) tuple形式
2. def foo(x,y,**kwargs):**会把溢出的按关键字定义的实参都接收,以字典的形式赋值给kwargs
print(x,y)
print(kwargs)
foo(1,2,c=2,name='lh',age=18)

输出:

1 2

{'c': 2, 'name': 'lh', 'age': 18}

例子:

def foo(name,age=10,*args,sex='male',height,**kwargs):
print(name)
print(age)
print(args)
print(sex)
print(height)
print(kwargs)
foo('alex',1,2,3,4,5,sex='female',height='150',a=1,b=2,c=3)

输出:

alex
1
(2, 3, 4, 5)
female
150
{'c': 3, 'a': 1, 'b': 2}
def foo(x,y,z):
print('from foo',x,y,z)
def wrapper(*args,**kwargs):
print(args)
print(kwargs)
foo(*args,**kwargs)
# wrapper(1,2,3,a=1,b=2)
wrapper(1,z=2,y=3)

输出:

(1,)
{'z':z,'y':3}
from foo 1 3 2
文件操作f=open('a.txt','r+') 对文件进行读写
f=open('a.txt','w+') 写读
f=open('a.txt','a+') 追加并且读
f=open('a.txt','w') f.write('1111\n') f.close() 关闭以释放内存
上下文管理with open('a.txt','r',encoding='utf-8') as f:
print(f.read())
with open('txt','r',encoding='utf-8') as read_f,\
open('aa.txt','w',encoding='utf-8') as write_f:
for line in read_f:
write_f.write(line)
else:#在上面流程执行成功之后,显示写入成功
print('write ok')decode() 解码with open('b.txt','rb') as f:
print(f.read().decode('utf-8'))
encode() 编码with open('c.txt','wb') as data:
data.write('工地人'.encode('utf-8'))