定义函数
def关键字,依次写出函数名、括号、括号中的参数和冒号 :
在缩进块中编写函数体,函数的返回值用 return 语句返回
def func(): #定义函数,函数名任意
pass #函数体
return
注:定义函数并不会执行函数体里边的内容,要有调用过程
def hello():
print('learn')
print('python')
return
hello() #调用过程
函数里边嵌套函数
def father():
print('is handsome...')
def son():
print('is cool...')
father()
- 函数的理解
def welcome(name): #name指定义函数时的变量,代表形参,任意起名
print('hello'+' '+name)
welcome('fensi')
name2='fentiao'
welcome(name2)
’fentiao’,'fensi’代表真实的数据信息, 调用函数时传的参数称为实参
参数的分类
- 位置参数: 形参和实参个数必须保持一致
def user_info(name,age): #按照位置传参数
print(name,age)
user_info('westos',19)
user_info(12,'westos')
user_info(age=13,name='westos')
user_info('westos') #错误,形参和实参不一致
- 默认参数:形参和实参可以不一致
def fun(x,y=2):
print(x**y)
fun(5)
fun(4,3)
- 可变参数
def mysum(*args):
"""
需求:用户可以传递任意个数值,计算和
注意:*args是可变参数
args是元组数据类型
args是形参,可以改成其他
"""
sum=0
for i in args:
sum+=i
print(sum)
mysum(1,2,3,4)
- 关键字参数
def stu_info(name,age,**kwargs):
"""
**kwargs是一个字典,可以传任意多个key-value对
kwargs是形参
"""
print(name,age)
print(kwargs)
stu_info('westos',9,hobbises=['running','swimming'],gender='male')
- 参数解包
对list tuple, set解包时, 只需要在变量前加*;
score=(9,4,3,2,6)
min,*middle,max=score
print(min,middle,max)
print(min,*middle,max)
如果要对dict进行解包,一个星号表示获取所有的key值,需要两个’'来对其进行解包,方可得到其value值
- 匿名函数
使用 lambda 来创建匿名函数。
- 定义规则---->lambda 形参:返回值
def fun(*args,**kwargs):
return args,kwargs
print(lambda *args,**kwargs:(args,kwargs))
- 参数检测
isinstance
def add(x: int, y: int):
# 参数数据类型的判断
if isinstance(x, int) and isinstance(y, int):
return x + y
else:
return False
print(add(1.0, 2.0))
函数返回值
返回值:函数运算的结果,还需要进一步进行操作时,给一个返回值
return 用来返回函数执行结果的,如果没有返回,默认为None
一旦遇到return ,函数执行结束,后面的代码不会执行
def my_pow(x,y=2):
"""
求x的y次方,y的默认值为2
:param x:
:param y:
:return:
"""
return x**y
print('hello')
print(my_pow(4))
a=my_pow(4,3)
print(a+100)
注意:hello并没有被打印出来,通过debug可以看出。
五 变量作用域
局部变量:只能在函数内部使用的变量
解释:在函数内部定义的普通变量,只在函数内部其作用, 函数执行结束, 变量会自动删除.
可变:函数内部改变会影响外部变
不可变:函数内部改变不会影响外部变量的值
全局变量:在整个程序中使用的变量
• global关键字:强制将局部变量转换为全局变量
a=5 #这个a是全局变量
print('outside:',id(a))
def fun():
a=3 #这个a是局部变量
print('inside:',id(a))
fun()
print(a)
print(id(a))
- set dict 是可以加上去的
a = [1,2,3,4]
print("outside:", id(a))
def fun():
a.append(5)
print("inside", id(a))
fun()
print(a)
print(id(a))
- 看看global的影响
a=5
print('outside:',id(a))
def fun():
global a #声明全局变量,内部的a=3影响外部a=5
a=3
print('inside:',id(a))
fun()
print(a)
print(id(a))