一、函数
1.位置参数
格式:
def 函数名(参数1,参数2):
代码块
函数名(值1,值2)
代码案例:
def f(a,b):
print("a:",a)
print("b:",b)
f(2,3)
2.关键字参数
格式:
def 函数名(参数1,参数2):
代码块
函数名(参数1=值1,参数2,=值2)
代码案例:
def aa(c,d):
print("c:",c)
print("d:",d)
aa(c=2,d=3)
注意:参数调用时,可以改变传参顺序,如果有位置参数需要位置参数放在关键字参数前面。
def aa(w,c,d):
print("c:",c)
print("d:",d)
print("w:",w)
aa(2,c=2,d=3)
3、缺省参数
定义:在形参中默认有值参数,称之为缺省参数。
代码案例:调用函数时,缺省参数的值没有传入
def pp(name,age=20):
print("name:",name)
print("age:",age)
pp(name="rose")
代码案例:调用函数时,缺省参数的值传入
def pp(name,age=10):
print("name:",name)
print("age:",age)
pp(name="jack",age=18)
4、不定长参数
定义:有时候需要一个函数能处理比当初声明时更多的参数,这些参数叫作不定参数,声明时不会命名
注意:加*的变量args会放在所有未命名的变量参数,args为元组
而加**的变量kwargs会存放在命名参数,即形如key=value的参数,kwargs为字典
格式:
def p(*agrs,**kwargs):
print("args:",args)
print("kargs:",kwargs)
p(参数)
代码案例:
不定长参数* args:
def p(*args):
print("args:",args)
p(100,200)
不定长参数** args:
def pp(**kwargs):
print("kwargs:",kwargs)
pp(a=3,b=4)
5、参数位置顺序
注意:如果很多个值都是不定长参数,那么这种情况下,可以将缺省参数放到 *args的后面, 但如果有 **kwargs的话,**kwargs必须是最后的
格式:
def fun(位置参数,*args,缺省参数,**kwargs):
代码块
fun(参数值)
代码案例:
def s(a,*args,b=2,**kwargs):
print("a:",a)
print("args:",args)
print("b:",b)
print("**kwargs",kwargs)
s(1,4,6,b=7,m=2,n=5)
6.函数返回值
格式:
def sum():
代码块
return 值
sum()
代码案例:
def sum(a,b):
return a+b
result=sum(1,2) #保存函数的返回值
print(result)
7.多个return
注意:一个函数中可以有多个return语句,但是只要有一个return语句被执行到,那么这个函数就会结束了,因此后面的return没有什么用处
代码案例:
def cr(n):
print("---1---")
if n==100:
print("---2---")
# 函数中下面的代码不会执行,因为return除了能够将数据返回之外,还有一个隐藏的功能:结束函数
return n+1
print("return执行之后不会继续执行")
print("231223")
else:
print("---3---")
return n+2
print("---4---")
result1 = cr(100)
print(result1) # 打印101
result2 = cr(200)
print(result2) # 打印202
8.返回多个数据
总结:return后面可以是元组,列表、字典等,只要是能够存储多个数据的类型,就可以一次性返回多个数据
代码案例:
def dd(a,b):
sh=a//b #取模
ch=a%b #取余
return sh,ch #默认元组
result=dd(5,2)
print(result)
9.函数类型
9.1 无参数,无返回值的函数
此类函数,不能接收参数,也没有返回值,一般情况下,打印提示灯类似的功能,使用这类的函数
def rr():
print("-------")
print('点点点')
print('')
print('1')
print('2')
print('3')
print('-------')
9.2 无参数,有返回值的函数
此类函数,不能接收参数,但是可以返回某个数据,一般情况下,像采集数据,用此类函数
def rr():
return 2
9.3 有参数,无返回值的函数
此类函数,能接收参数,但不可以返回数据,一般情况下,对某些变量设置数据而不需结果时,用此类函数
9.4 有参数,有返回值的函数
此类函数,不仅能接收参数,还可以返回某个数据,一般情况下,像数据处理并需要结果的应用,用此类函数
# 计算1~num的累积和
def cc(num):
result = 0
i=1
while i<=num:
result=result+i
i+=1
return result
print(cc(4))
10.函数嵌套
一个函数里面又调用了另外一个函数,这就是所谓的函数嵌套调用
代码案例:
def test():
print("testa start")
print("testb testb 执行")
print("testb end")
def testa():
print("testa start")
test()
print("testa end")
11.匿名函数
定义:lambda函数也叫匿名函数,即函数没有具体的名称
注意:lambda函数可以赋值给变量,默认是返回的,所以不用再加return关键字
注释:例如g = lambda x:x+1,可以看成如下函数,冒号前是参数,可以有多个,用逗号隔开,冒号右边的 返回值
代码案例:
g = lambda x :x+1
print(g(1))
def g(x):
return x + 1
print(g(1))
二、变量
1.局部变量
定义:局部变量,就是在函数内部定义的变量
约束:其作用范围是这个函数内部,即只能在这个函数中使用,在函数的外部是不能使用的
代码案例:
def test1():
a=2
print("我是局部变量啊a:",a)
a=20
print("修改之后的局部变量a:",a)
def test2():
a=30
print("我是test02函数中的局部变量a",a)
test1()
test2()
2.全局变量
定义:在函数外边定义的变量叫做全局变量
约束:全局变量能够在所有的函数中进行访问
代码案例:
a=100
def test1(): # 虽然没有定义变量a但是依然可以获取其数据
print(a)
def test2(): # 虽然没有定义变量a但是依然可以获取其数据
print(a)
# 调用函数
test1()
test2()