学习python第八天

发布时间:2024年01月19日

函数

创建和调用函数:

定义好函数之后,只表示这个函数封装了一段代码,如果不调用该函数的话,代码不会执行

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)

闭包:

在函数中可以(嵌套)定义另一个函数时,如果内部的函数引用了外部的函数的变量,则可能产生闭包。闭包可以用来在一个函数与一组“私有”变量之间创建关联关系。在给定函数被多次调用的过程中,这些私有变量能够保持其持久性。

  • 闭包使得内部函数能够读取外部函数内的变量的函数。
  • 作用1:闭包是将外层函数内的局部变量和外层函数的外部连接起来的一座桥梁。
  • 作用2:将外层函数的变量持久地保存在内存中。
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())

?

文章来源:https://blog.csdn.net/weixin_67852201/article/details/135673649
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。