函数基础
函数定义
def func():
dr() # 不属于语法错误,不会报错
print('*'*10)
函数用来封装一些代码,只会检测语法,不调用的话不会执行代码。
def func():
dr() # 会报错,dr没有定义
print('*'*10)
func() # 调用执行函数代码
执行函数代码
定义函数的两种形式
无参函数
定义函数时参数是函数体接收外部传值的一种媒介,其实就是一个变量名。定义时无参,意味着调用时也无需传入参数。
如果函数体代码逻辑不需要依赖外部传入的值,必须得定义成无参函数。
def func():
print('hello nick')
func()
hello nick
有参函数
在函数定义阶段括号内有参数,称为有参函数,调用时意味着也必须传入参数。
如果函数代码逻辑需要依赖外部传入的值,必须得定义成有参函数。
def sum_self(x,y):
'''求和'''
res=x+y
print(res)
sum_self(1,2)
3
函数的返回值
什么是返回值
简单来说就是,函数内部代码经过一系列逻辑处理获得的结果。
为什么要有返回值
如果需要在程序中拿到函数的处理结果做进一步的处理,则需要函数必须要有返回值。
需要注意的是:
- return是一个函数结束的标志,函数内可以有多个return,但只要执行到return,函数就会停止
- return的返回值可以返回任意数据类型
- return的返回值无个数限制,即可以使用逗号隔开返回多个值
0个:返回None
1个:返回值是该值本身
多个:返回值是元组
# 返回一个值
def max_self(x,y):
if x>y:
return x
else:
return y
a=max_self(5,10)*2
print(a)
20
# 返回多个值
def func():
name='nick'
age=19
hobby_list=['read','run']
return name,age,hobby_list
name,age,hobby_list=fun()
print(name,age,hobby_list)
('nick',19,['read','run'])
可变长参数
可变长实参
def self_max(a,b,c,d,e,f,g,h,k,x=1,y=3,z=4): # 默认参数
print(a,b,c,d,e,f,g,h,k,x,y,z)
a=[1,2,3,4,5,6,7,8,9] # *把这个列表内的元素一个一个取出来,然后一个一个传给这个函数
b={'x':10,'y':12} # **会把这个字典打散成键值对的形式作为实参传给函数
self_max(*a,**b) # (1,2,3,4,5,6,7,8,9,x=10,y=12)
1,2,3,4,5,6,7,8,9,10,12,4
可变长形参
def self_max(*args,**kwargs): # *后面必须写args,**后面必须写kwargs,这是约定俗成的一种规范
print(args) # args接收位置实参,然后以元组形式保存
print(kwargs) # kwargs接收关键字实参,然后以字典形式保存
self_max(1,2,3,4,5,6,7,x=6,y=8,z=20,a=10,c=1000)
(1, 2, 3, 4, 5, 6, 7)
{'x': 6, 'y': 8, 'z': 20, 'a': 10, 'c': 1000}