'''
# 函数的定义
def 函数名:
函数体
'''
def func_01():
print("这是函数体")
# 函数的调用
func_01() # 这是函数体
1、只要是函数就一定会有返回值
2、return:
标识符函数体的结束标志
返回函数的指定值:变量、表达式、多个值
3、return关键字后面为空的时候,默认返回为None
# 函数的返回值
# return 变量
def func_02():
a = 10
return a
res001 = func_02()
print(res001) # 10
# return 表达式
def func_03():
a = 10
b = 9
return a + b
res = func_03()
print(res) # 19
# return 多个值
def func_04():
age = 10
height = 180
weight = 120
return age,height,weight
res_01 = func_04()
res1,res2,res3 = func_04()
print(res_01) # (10, 180, 120)
print(res1,res2,res3) # 10 180 120
1、定义带有参数的函数
def 函数名(参数名1,参数名2,参数名3):
函数体:实现代码
2、调用
func(值1,值2,值3)
3、
形参:在定义函数时,在括号里面给的变量。eg:参数名1,参数名2,参数名3
实参:在调用函数时,传递的参数。eg:值1,值2,值3
传参:传参是一个过程,在调用函数的时候把实参的值传递给形参的一个过程
4、参数的类型:位置参数、指定参数、缺省参数、不定长参数
在定义函数的时候,定义了几个形参,在调用函数的时候就要给几个实参,而且位置要一一对应,否则会报错。
def func_04(a,b):
print("a = ",a)
print("b = ",b)
return a + b
res = func_04(10,1)
print(res) # 11
def func_05(name, age, sex):
print('''
name:{},
age:{},
sex:{}
'''.format(name, age, sex))
func_05("Jane",12,"boy")
'''执行结果
name:Jane,
age:12,
sex:boy
'''
# 如果位置没有一一对应,就会出现下面这种情况,想要给name的值变成了age,age的值变成了name
func_05(12,"Jane","boy")
'''执行结果
name:12,
age:Jane,
sex:boy
'''
在调用函数传参的时候,可以使用形参的参数名来指定所传的值是哪一个,写的时候可以不按照形参顺序,因为在实际执行的之后,程序会根据你的传的参数名来确定你要把值给哪一个形参。
def func_06(name, age, sex):
print('''
name:{},
age:{},
sex:{}
'''.format(name, age, sex))
func_06(name = "Jane",age = 12,sex = "boy")
func_06(name = "Jane",sex = "boy", age = 12)
'''执行结果都是:
name:Jane,
age:12,
sex:boy
'''
一定要把位置参数放在最前面,指定参数放在后面,形参和实参的顺序都要这样放。
def func_07(name, age, sex):
print('''
name:{},
age:{},
sex:{}
'''.format(name, age, sex))
func_07("Jane", 14, sex = "boy")
'''执行结果
name:Jane,
age:14,
sex:boy
'''
# func_07("Jane", sex = "boy", 14) 报错信息: Positional argument cannot appear after keyword arguments
在定义函数的时候,直接给形参一个初始值,这样在调用函数的时候就不用再给它传值了,如果传值的话就会覆盖原本的初始值。
def func_08(name, age, sex = 'boy'):
print('''
name:{},
age:{},
sex:{}
'''.format(name, age, sex))
func_08('张三',21)
''' 执行结果
name:张三,
age:21,
sex:boy
'''
func_08('李四',18,'girl')
'''执行结果:覆盖了初始值
name:李四,
age:18,
sex:girl
'''
参数的个数不固定,可以使用不定长参数的形式传参。
def func_09(*args):
print(args)
sum = 0
for i in args:
sum += i
print(sum)
func_09(1,2,3,4,5,6,7,8,9,10)
def func_10(**kwargs):
print(kwargs)
sum = 0
for i in kwargs.values():
sum += i
print(sum)
func_10(a = 10, b = 20, c = 20)
def func_12():
print("hello")
func_11()
print("hello world")
def func_11():
print("python")
python提供的、可以直接用的函数,比如print。
# 作用域函数
print(globals()) # 查看文件内的全局变量
print(locals()) # 查看文件内的局部变量
# 转换函数
'''
int()
float()
str()
list()
tuple()
set()
dict()
bool()
'''
# 数学函数
'''
max() 最大值
min() 最小值
sum() 总和
pow() 幂次方
divmod() 商和余数
abs() 绝对值
round() 四舍五入
'''
print("最大值",max(1,2,3,4))
print("最小值",min(1,2,3,45))
print("总和",sum([1,2,3,4,5]))
print("幂次方",pow(10,2))
print("绝对值",abs(-1))
print("四舍五入",round(5.678))
print("四舍五入,保留两位",round(4.567,2))
'''运行结果
最大值 4
最小值 1
总和 15
幂次方 100
绝对值 1
四舍五入 6
四舍五入,保留两位 4.57
'''
全部变量:在文件内的任何任何一个地方都可以使用
局部变量:只在声明的作用域下可以使用
定义一个全局变量:
global a
a = 10
错误写法:global a = 10
sum = 0
def func_13():
global a
a = 10
print(a)
b = 10
sum = a + b
return sum
res = func_13() # 20
print(res)
# sum = a + b 报错信息:"b" is not defined
用来结束这个函数是做什么的,参数的意思是什么,有没有返回值之类的
查看注释信息 函数名.__doc
def func_05(name, age, sex):
'''
自我介绍是的函数
:param name:名字
:param age:年龄
:param sex:性别
:return :无返回值
'''
print('''
name:{},
age:{},
sex:{}
'''.format(name, age, sex))