python函数微讲解
python函数微讲解
函数的调用
1.调用函数的时候,一定要先定义好函数,先定义函数,在调用,否则就会报错。
# index() # 报错 def index(): print('先定义函数才能看到我') index() # 先定义函数才能看到我
2.函数在定义阶段只检测语法不执行代码。
3.函数体代码只有在调用函数的时候才会执行,调用函数的方法是:函数名+括号,如果有参数,就在括号内写上参数。
4.函数名其实就是变量名,只不过指向的是内存中函数体代码所在的位置。
函数的分类
1.内置函数
内置函数就是python已经给我们写好的函数,我们可以直接拿来使用的函数,比如之前我们经常使用的print、len、input等等都是内置函数。
2.自定义函数
自定义函数就是程序员自己定义的函数,分为:
(1).无参函数
无参函数就是在定义函数阶段,函数名后面括号里面没有参数。
def index(): print('这是一个无参函数') index() # 这是一个无参函数 不需要参数
(2).有参函数
有参函数就是在定义函数阶段,函数名后面括号里面有参数。
def index(a): print(a,'这是一个有参函数') index(123456) # 123456 这是一个有参函数

(3).空函数
空函数就是在函数定义阶段,用“pass”或者“...”来代替函数体代码。看似空函数无用,其实用处很大,对于项目的前期搭建具有很大的作用,可以先用空函数来搭建项目的框架,然后在一步步的追加功能。
def index(): pass
函数的返回值
1.什么是函数的返回值?
函数的返回值就是函数执行完之后返回的结果。
2.如何获得函数的返回值?
变量名 = 函数调用
然后print(变量名)
3.如何操作返回值
(1).当函数体代码没有return关键字的时候,函数的返回值为"None"。
def index(): print('这里返回None') l = index() print(l) # None

(2).当函数体代码后面跟了return,但是后面没有值,返回的也是None.
def index(): print('这里返回None') return l = index() print(l) # None
(3).当函数体代码后面跟了return,后面跟了什么值,就返回什么值,跟了变量名,就返回变量名指定的值。
def index(): print('这里返回123') return 123 l = index() print(l) # 这里返回123 def index1(): print('这里返回oscar') return name name = 'oscar' l1 = index1() print(l1) # 这里返回oscar
(4).return后面可以跟随多个值,用逗号隔开,返回的时候组合成了元组。
def index(): print('返回元组') return 12,'jason',999 l = index() print(l) # (12, 'jason', 999)
(5).函数体代码遇到“return”,立刻结束,跟循环里的“break”很像。
def index(): print('执行我') return 12 print('不执行') # 这一句是不执行的 l = index() print(l) # (12, 'jason', 999)
函数的参数
1.函数的参数可以分成两大类:形式参数和实际参数
(1).形式参数:在函数定义阶段,括号里写的参数叫形式参数,也叫做形参。
(2).实际参数:在调用函数阶段,括号里写入的参数叫实际参数,也叫做实参。
2.形参与实参的关系:
形参类似于变量名,实参类似于变量值,在调用函数阶段传入实参,与形参临时绑定,并执行函数代码体,函数执行结束后自动解除绑定。
def index(a, s): # a,s都是形式参数 print(a, s) index(1, 2) # 1,2都是实际参数
1会临时绑定给a,2会临时绑定给b,然后执行函数代码体,执行结束后自动解除绑定,然后a,s就处于没有绑定值的状态,等待下一次函数调用传入实参进行绑定。
def index(a, s): # a,s都是形式参数 print(a, s) m = 'jason' z = 123 index(m, z) # 将变量名指向的'jason',123传入形参进行绑定
位置参数
1.位置形参:在定义函数阶段,函数名后面的括号里从左往右依次填写的变量名
def index(a, s): # a,s就是位置形参
2.位置实参:在调用函数阶段,函数名后面的括号里从左往右依次填写的变量值
index(1, 2) # 1,2就是位置实参
3.位置参数的特点:
(1).位置形参与位置实参是从左往右依次进行绑定的
(2).位置形参与位置实参进行绑定的时候个数要相等,一个不能多,一个也不能少
def index(a, s): print(a, s) index(1, 2) # 正确 index(1, 2, 3, 4) # 报错 index(1) # 报错
关键字参数
在实参中出现,直接传递参数,不需要遵循位置参数的原则
def index(a, s): print(a, s) index(s = 999, a = 2) # 2 999 # index(s=999, 12) # 报错 关键字参数必须放在位置参数的后面 # index(999,a=45) # 报错 形参只能指向一个实参
默认参数
出现在形参中,在函数定义阶段,已经给一些形参进行赋值,如果在实参中不在给他赋值就使用默认的,如果在实参中进行传值,就使用传的值,默认参数要在位置参数的后面。
def index(name,age,sex = '男'): print(''' 名字:%s 年龄:%s 性别:%s '''% (name,age,sex)) index('oscar',18) # 名字:oscar 年龄:18 性别:男 index('jason',21,'女') # 名字:jason 年龄:21 性别:女
可变长参数
1."*"号
"*"号在形参中,表示接收多余的参数,并用元组保存起来赋值给"*"号后面的变量名。
def index(a,b,*c): print(a,b,c) index(1,2,2,2,2,3,3,3,) # 1 2 (2, 2, 2, 3, 3, 3) index(1) # 报错 因为形参有两个,也就是ab,所以实参至少传两个值
2."**"号
"**"号在形参中,表示接受多余的关键字参数,并用字典保存起来赋值给"**"号后面的变量名。
def index(a,b,**c): print(a,b,c) index(a=1,b=2,f=3,s=5) # 1 2 {'f': 3, 's': 5} # index(a=1) # 报错 因为形参有两个,也就是ab,所以实参至少传两个值
3.定义一个无论接受多少,什么数据类型的参数函数都能正常执行的代码:
def index(*a,**c): print(a,c) index() # () {} index(1) # (1,) {} index(1,2,3,a=5,) # (1, 2, 3) {'a': 5}
补充:"*"与"**"在形参的使用使用中,后面的变量名没有特殊的要求,但是python有推荐的写法:(*args,**kwargs)
"*"与"**"在实参的使用
1."*"在实参的使用
在实参中可以将列表或者元组里的元素作为位置参数一一传入。
def index(*a): print(a) index(*['jason', 'oscar', 'jerry']) # ('jason', 'oscar', 'jerry') index(*(1, 2, 3)) # (1, 2, 3)
2."**"在实参的使用
在实参中可以将字典的键值对作为关键字参数一一传入。
def index(**k): print(k) index(**{'name': 'jason', 'age': 18}) # {'name': 'jason', 'age': 18} index(x = 'asd') # {'x': 'asd'}
这里是IT小白陆禄绯,欢迎各位大佬的指点!!!


浙公网安备 33010602011771号