zoukankan      html  css  js  c++  java
  • 4.函数

    函数返回值
    返回值数=0:返回None
    返回值数=1:返回object
    返回值数>1:返回tuple

    参数
    位置参数调用(按照位置一一对应形参)
    关键字调用(与形参顺序无关,调用时按照形参名一一赋值(x=2)),形参名赋值必须写在参数表最后
    默认参数:函数定义的时候已经在参数表内将形参赋值,函数调用时不写这个默认参数将按照默认值调用,写这个参数,将以新写的这个参数值调用
    参数组: (参数组一定要放在最后)定义函数用*args表示不固定个数的位置参数,转换成元组,args是变量名,调用时也可以用*来传递一个不固定个数的实参,这种不固定个数的参数表在程序里以元组存在
    **kwargs字典形式的不固定个数的参数,把N个关键字参数,转换成字典
    函数内部调用其他函数:被调用函数必须在调用函数的上面
    示例:
    列表参数:
    def test(*args): #定义
    print(args)
    test(1,2,3,4,5,6) # 屏幕输出(1,2,3,4,5,6)
    test(*[1,2,3,4,5,6]) # 屏幕输出同上
    字典参数:
    def test2(**kwargs): #定义
    print(kwargs)
    test2(name="zhang",age=8) #关键字传参形式调用 屏幕输出{"name":"zhang","age"=8}
    test2(**{"name":"zhang","age"=8}) #传入字典参数调用 屏幕输出同上
    与位置参数相结合:
    def test3(name,**kwargs):
    test3("zhang",age=8,sex="m") #第一个参数对应name,后面的需要用关键字传参或者直接传递一个字典
    test3("zhang",**{"age"=8","sex"="m"})
    与位置参数关键字参数结合:
    def test4(name,age=8,**kwargs)
    test4("zhang",18,sex="m",hobby="game") #第一个参数对应name,第二个对应age,后面的都传递给kwargs
    与位置参数关键字参数*args相结合
    def test5(name,age=8,*args,**kwargs)
    test5("zhang","18",1,2,3,set="m",hobby="game") #第一个参数对应name,第二个对应age,第三四五个对应*args,第六七个对应**kwargs,
    因为*args只能接收位置参数,**kwargs只能接收关键字参数

    局部变量和全局变量(在函数内部定义的变量叫做局部变量,程序一开始定义的变量叫全局变量)
    全局变量的作用域是整个程序,局部变量的作用域是定义该变量的函数
    当全局变量与局部变量同名时:在定义局部变量的子程序内,局部变量起作用,在其他地方全局变量起作用

    函数内部想改全局变量必须先在函数内部用 global 变量名 进行声明,再修改变量值,可以改,但是不要用这个方法改全局变量
    绝对禁止函数内部声明全局变量并修改
    字符串和整数不能再函数内修改
    列表字典集合类可以在函数内修改
    在函数内部用 global 变量名 声明,该变量即为全局变量
    global关键字会告诉解释器后面的变量是一个全局变量,再使用赋值语句时,就不会再创建局部变量
    在开发时,应该把模块中的所有全局变量,定义在函数上方,这样才能保证所有的函数都能够正常访问到每一个全局变量
    定义全局变量,可以用gl_变量名 来定义全局变量,方便阅读
    代码结构:
    shebang
    import 模块
    全局变量
    函数定义
    执行代码

    返回值(用return语句把函数的执行结果返回)
    1.函数在执行过程中只要遇到return语句,就会停止执行并返回结果,可以理解为return为函数的结束
    2.如果未在函数中指定return,那这个函数的返回值为None

    递归(一个函数在函数内部调用自己,那么叫递归函数)
    1.必须有一个明确的结束条件
    2.每次进入更深一层递归时,问题规模相比上次递归都应有所减少
    3.递归效率不够,递归层次过多会导致栈溢出












  • 相关阅读:
    利用python做矩阵的简单运算(行列式、特征值、特征向量等的求解)
    numpy.linalg.svd函数
    梯度裁剪(Clipping Gradient):torch.nn.utils.clip_grad_norm
    tf.matmul()报错expected scalar type Float but found Double
    1283 最小周长
    1182 完美字符串
    1091 线段的重叠
    1090 3个数和为0
    1087 1 10 100 1000
    1083 矩阵取数问题
  • 原文地址:https://www.cnblogs.com/huohu121/p/12234913.html
Copyright © 2011-2022 走看看