python def函数

本文最后更新于:2022年11月19日 下午

  • 注:函数的内容称为函数体,函数体是多条python语句组成的

    简单的一个print函数

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    In [25]: def myfunc():
    ...: for i in range(3):
    ...: print("煤煤是小乖猫")
    ...:

    # 效果
    In [26]: myfunc()
    煤煤是小乖猫
    煤煤是小乖猫
    煤煤是小乖猫

    传入参数

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    In [27]: def myfunc(name):
    ...: for i in range(3):
    ...: print(f"i love {name}.")
    ...:

    # 效果
    In [28]: myfunc("煤煤")
    i love 煤煤.
    i love 煤煤.
    i love 煤煤.

    # 传参 并 指定次数
    In [30]: myfunc("煤煤", 5)
    i love 煤煤.
    i love 煤煤.
    i love 煤煤.
    i love 煤煤.
    i love 煤煤.

    数学运算(return 会直接返回结果 后面不在执行)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    # 第一种写法
    In [31]: def div(x,y):
    ...: z = x / y
    ...: return z
    ...:

    In [32]: div(4,2)
    Out[32]: 2.0


    # 第二种写法(比较方便)
    In [33]: def div(x,y):
    ...: return x / y
    ...:

    In [34]: div(4,2)
    Out[34]: 2.0


    # 优化增加判断(除数不能为0)
    In [36]: def div(x,y):
    ...: if y == 0:
    ...: return "除数不能为0!"
    ...: else:
    ...: return x / y
    ...:

    In [37]: div(4,2)
    Out[37]: 2.0

    In [38]: div(4,0)
    Out[38]: '除数不能为0!'

    位置参数:定位

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    In [42]: def myfunc(s, vt, o):
    ...: return "".join((o, vt, s))
    ...:

    # 指定参数运行,返回的数值join是反过来的,所以结果就是反的
    In [45]: myfunc("我","亲了","煤煤")
    Out[45]: '煤煤亲了我'

    # 关键字参数(知道name后就可以指定参数对应了)
    In [46]: myfunc(o="我",vt="亲了",s="煤煤")
    Out[46]: '我亲了煤煤'

    位置参数必须在关键字参数之前

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    # 位置参数和关键字参数反了就会报错
    In [47]: myfunc(o="我","摸了摸","煤煤")
    Input In [47]
    myfunc(o="我","摸了摸","煤煤")
    ^
    SyntaxError: positional argument follows keyword argument

    # 关于默认参数,这样写就不会报错,因为关键字参数在最后面
    In [48]: def myfunc(s, vt, o="煤煤"):
    ...: return "".join((o, vt, s))
    ...:

    In [49]: myfunc("焦焦","摸了摸")
    Out[49]: '煤煤摸了摸焦焦'

    In [50]: myfunc("焦焦","摸了摸","流浪猫")
    Out[50]: '流浪猫摸了摸焦焦'

    # 默认参数要放在最后面,不然就会报错
    In [51]: def myfunc(s="焦焦", vt, o="煤煤"):
    ...: return "".join((o, vt, s))
    Input In [51]
    def myfunc(s="焦焦", vt, o="煤煤"):
    ^
    SyntaxError: non-default argument follows default argument


    In [52]: def myfunc(vt="", s="焦焦", o="煤煤"):
    ...: return "".join((o, vt, s))
    ...:

    In [53]: myfunc("摸了摸")
    Out[53]: '煤煤摸了摸焦焦'

    冷知识:斜杠左面不能使用关键字参数,只能使用位置参数

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    # 例如:abs和sum这两个函数都有一个斜杠
    In [54]: help(abs)
    Help on built-in function abs in module builtins:

    abs(x, /)
    Return the absolute value of the argument.


    In [55]: help(sum)
    Help on built-in function sum in module builtins:

    sum(iterable, /, start=0)
    Return the sum of a 'start' value (default: 0) plus an iterable of numbers

    When the iterable is empty, return the start value.
    This function is intended specifically for use with numeric values and may
    reject non-numeric types.

    # 例如abs ,关键字参数在前就会报错
    In [56]: abs(-1.5)
    Out[56]: 1.5

    In [57]: abs(x = -1.5)
    ---------------------------------------------------------------------------
    TypeError Traceback (most recent call last)
    Input In [57], in <cell line: 1>()
    ----> 1 abs(x = -1.5)

    TypeError: abs() takes no keyword arguments


    # 自己定义的函数也可以这样用斜杠定义参数
    In [60]: def abc(a , / , b , c):
    ...: print(a, b, c)
    ...:

    In [61]: abc(1,2,3)
    1 2 3

    In [62]: abc(a=1,2,3)
    Input In [62]
    abc(a=1,2,3)
    ^
    SyntaxError: positional argument follows keyword argument


    In [63]: abc(3,b=2,c=1)
    3 2 1

python def函数
https://simple2ich4n.top/21386/
作者
2ich4n
发布于
2022年7月19日
更新于
2022年11月19日
许可协议