zoukankan      html  css  js  c++  java
  • Python函数基础

    函数定义及调用

    def my_abs(x):
        if x>=0:
            return x
        return -x
    my_abs(-2)

    函数参数

    • 位置参数:函数调用时的必传参数
    def power(x):    #x:位置参数
        return x * x
    • 默认参数:默认参数必须指向不变对象(调用带默认参数的函数时,可以不按顺序提供默认参数,但必须把参数名写上)
    def student(name, gender, age=6, city='Beijing'):
        print('name:', name,"gender:",gender,"age:",age,"city:",city)
    student("fred","f")
    student("fred","f",city="chengdu")
    • 可变参数:参数个数不确定(可变参数在调用时,自动组装为一个tuple)
    def calc(*numbers):
        sum = 0
        for n in numbers:
            sum = sum + n*n
        return sum
    calc()
    calc(1,2)
    num=[1,2,3]
    print(calc(*num))
    • 关键字参数:关键字参数在调用时自动组装为一个dict
    def person(name,age,**kw):
        print("name:",name,"age:",age,"other:",kw)
    #调用时可只传入位置参数,也可传入任意个数的关键字参数
    person("fred",26)   #name: fred age: 26 other: {}
    person("fred",26,city="chengdu")    #name: fred age: 26 other: {'city': 'chengdu'}
    extra = {"city":"chengdu","job":"engineer"}
    person("fred",26,**extra)   #name: fred age: 26 other: {'city': 'chengdu', 'job': 'engineer'}
    • 命名关键字参数:限制关键字参数的名字
    def person(name,age,*,city,job):
        print(name,age,city,job)    #上面的*号后面的为命名关键字参数
    person("fred",26,job="engineer",city="chengdu")
    #如果已定义了可变参数,则命名关键字参数前不在需要*
    def person(name,age,*extra,city,job):
        print("...")
    person("fred",26,(175,75),city="chengdu",job="engineer")
    • 函数参数组合-参数定义顺序:位置参数,默认参数,可变参数,明明关键字参数,关键字参数
    def f(a, b, c=0, *, d, **kw):
        print('a =', a, 'b =', b, 'c =', c, 'd =', d, 'kw =', kw)
    递归:以下两种递归方式都会存在栈溢出(因为Python没有对尾递归做优化)
    • 递归函数:函数内部调用自身
    def fact(n):
        if n == 1:
            return 1
        return n*fact(n-1)
    fact(10)
    • 尾递归(函数结尾返回自身,且只返回自身)
    def fact(n):
        return fact_iter(n,1)
    def fact_iter(num,profuct):
        if num==1:
            return profuct
        return fact_iter(num-1,num*profuct)
    fact(10)
     
  • 相关阅读:
    核心动画-关键帧动画易混淆属性记录
    CALayer的隐式动画
    const位置上的不同代表哪些不同的意义
    又是一年国庆假期最后一天
    你做微商赚到钱了吗?
    为什么你不看好家教O2O
    【算法】基数排序
    【算法】快速排序/数组第K小的元素
    【算法】归并排序
    【算法】插入排序/冒泡排序/选择排序
  • 原文地址:https://www.cnblogs.com/sghy/p/8073680.html
Copyright © 2011-2022 走看看