函数的定义
- 范例
def print(self, *args, sep=' ', end='n', file=None):
- 总结
- 无参
def 函数名():
快注释
函数体
定义函数,并不会执行函数体里面的内容
def hello():
print('hello')
print('sheenstar')
调用函数的过程
hello()
函数里面嵌套函数
def sheen():
print("happy is ...")
def star():
print("sheen")
调用外层函数时,内层函数不会执行
sheen()
happy is ...
变量参数
定义函数时的变量,称做形参,可以任意命名
真实的数据信息,调用函数时传递的参数,称为实参
def game(guess): #guess是形参
print(guess>2)
game(3) #3是实参
number = 1
game(number) #number是实参
形参
形参可分为:位置参数,默认参数,可变参数,关键字参数
- 位置参数
形参必须和实参个数一致,按照位置传递参数
def getinfo(name, age):
print(name, age)
getinfo('sheen', 17)
getinfo(age=13, name='star')
sheen 17
star 13
- 默认参数
实参和形参的个数可以不一致
def mypow(x, y=2):
"""
求x的y次方,y默认值为2
:param x: value
:param y:
:return:
"""
print(x ** y)
mypow(2)
mypow(2, 3)
4
8
- 可变参数
# 可变参数
def mysum(*args):
"""
用户可以传入任意个数值,计算数值的和
注意:*args是可变参数;
args是元组数据类型
args可以改称其他,因为是形参
mysum(1,2,45,787,...)
:return:
"""
print(args) # 元组
sum = 0
for item in args:
sum += item
print(sum)
mysum(1, 2, 3, 4, 5, 6, 7)
28
-
关键字参数
**kwargs是一个字典,可以传递任意多的key-value对
def getstinfo(name, age, **kwargs):
print(name, age)
print(kwargs)
getstinfo('sheen', 19, hobbies=['code', 'flower'], gender='female')
sheen 19
{'hobbies': ['code', 'flower'], 'gender': 'female'}
动态添加函数成员
def fun():
print(fun.x)
fun() #报错,AttributeError: 'function' object has no attribute 'x'
动态添加
fun.x = 3
fun()
3
动态删除
fun.x = 3
del fun.x
fun() #报错,AttributeError: 'function' object has no attribute 'x'
函数返回值
返回值:函数运算的结果,还需要进一步操作时,给一个返回值'return'
'return'用来返回函数执行结果,如果没有返回,默认为‘none’
遇到'return',函数执行结束,后面代码不会执行,(yield)
python可以间接返回多个值;原理:返回一个元组,再对元组进行解包
def myfun(x,y):
return x+y,x-y,x*y,x**y
m=myfun(3,2)
print(m)
(5, 1, 6, 9)
变量的作用域
变量:局部变量,全局变量
局部变量:在函数体内定义的变量,只在函数内有意义,函数执行结束后,变量不存在
不可变数据类型:函数内部改变,不会影响外部变量值
可变数据类型:函数内部改变,会影响外部变量值
a= 1
print('outsides',id(a))
def fun():
a=5 #局部变量
print('besides:',id(a))
fun()
print(a)
outsides 9326560
besides: 9326688
1
# 全局变量:global
a= 1
print('outsides',id(a))
def fun():
global a #a为全局变量
a=5
print('besides:',id(a))
fun()
print(a)
print(id(a))
outsides 9326560
besides: 9326688
5
9326688
函数补充
给变量和返回值都设定默认数据类型,不是此类型,函数仍能执行
def myadd(x:int,y:int) -> int:
return x+y
print(myadd(1.0,8))
9.0
- 参数数据类型的判断
isinstance()
>>> isinstance(1,int)
True
>>> isinstance([1,2],int)
False
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。