函数
创建和调用函数:
定义好函数之后,只表示这个函数封装了一段代码,如果不调用该函数的话,代码不会执行
def funce():
pass
?
def funce(a,b):
pass
funce()
参数:
形参:在定义函数时传入的是形式参数也叫形参(下边的例子中a,b就是形参)
实参:在调用函数时传入的实际参数也叫实参(1是实参)
def funce(a,b):
c = a+b
return c
print(funce(1,1))
return函数
想要获得返回值就可以使用return函数,执行完return函数后就会跳出函数,return后的代码不会再执行
?
def funce(a,b):
c = a+b
return c
#此时print里的内容就不会执行
print("nihao1")
print(funce(1,1))
位置参数:是在编程语言中函数或子程序调用的一种参数类型。 它们是根据参数在参数列表中的位置(而非名称)来确定其值的
def funs(a,b,c):
return "".join((c,b,a))
print(funs("我"
关键字参数:函数调用时,指定参数名称,称为关键字参数
注意:当我们将位置参数和关键字参数一起使用时,位置参数必须在关键字参数之前
默认参数:在定义函数时,就给形参传入了数据的参数,此时如果我们在调用的时候没有传入参数,那么程序就会使用默认参数
def funs(a,b,c="他"):
return "".join((c,b,a))
print(funs("我","打了"))
注意:默认参数必须放在最后位置
当我们在形参里面添加了/,那么/左边的参数必须使用位置参数,右边都可以
def funs(a,/,b,c):
return "".join((c,b,a))
print(funs("我",b="打了",c="dsa"))
当我们在形参里面添加了*号,那么*右边 的形参必须传入关键字参数,左边的都可以
def funs(a,*,b,c):
return "".join((c,b,a))
print(funs( "我",b="打了",c="dsa"))
?收集参数:指定一个参数,然后允许调用函数时传入任意数量的参数
当我们在调用函数时,再函数内传入元组时,如果在元组名之前添加了一个*,解包,会把元组内的元素一个一个提取出来,如果想要传入列表时就需要添加**号
def func(a,b,c):
print(a,b,c)
a = (1,2,3)
print(*a)
a ={"a":1,"b":2,"c":3}
func(**a)
闭包:
在函数中可以(嵌套)定义另一个函数时,如果内部的函数引用了外部的函数的变量,则可能产生闭包。闭包可以用来在一个函数与一组“私有”变量之间创建关联关系。在给定函数被多次调用的过程中,这些私有变量能够保持其持久性。
origin = (0,0)
legin_x = [-100,100]
legin_y = [-100,100]
def func(x=0,y=0):
def funb(a=[],b=0):
a=(input("请输入你要移动的坐标"))
a = a.split(",")
b = int(input("请输入你要移动的步数"))
nonlocal x,y
a_x = x + int(a[0]) * b
a_y = y + int(a[1]) * b
if a_x<legin_x[0]:
x = a_x - legin_x[0]
elif a_x > legin_x[1]:
x = legin_x[1] - (a_x - legin_x[1])
else:
x = a_x
if a_y<legin_y[0]:
y = a_y - legin_y[0]
elif a_y > legin_y[1]:
y = legin_y[1] - (a_y - legin_y[1])
else:
y = a_y
return x,y
return funb
c = func()
print(c())
?