zoukankan      html  css  js  c++  java
  • python学习笔记之函数的参数

    函数的参数有位置参数和关键字参数,位置参数一定要在关键字参数的前面,位置参数的优先级是高于关键字参数的,否则会报错

    def my_abs(a,b):
    print(a)
    print(b)

    my_abs(10,1)
    以上函数运行结果为
    10
    1
    上面的传入参数是典型的位置参数,我们将之更改为位置加关键字参数
    def my_abs(a,b):
    print(a)
    print(b)

    my_abs(10,b=3)
    以上函数运行结果为
    10
    3
    似乎也没问题,那我们用以下方式运行下,把关键字参数放在位置参数前面
    def my_abs(a,b):
    print(a)
    print(b)

    my_abs(b=10,3)
    然而报错了,看下报错信息

    File "C:/Users/Administrator/PycharmProjects/untitled/funca.py", line 5
    my_abs(b=10,3)
    ^
    SyntaxError: positional argument follows keyword argument

    关键字参数必须跟随在位置参数后面! 因为python函数在解析参数时, 是按照顺序来的, 位置参数是必须先满足, 才能考虑其他可变参数.

    另外还有可变参数

    def my_abs(*a):
    print(a)

    my_abs(1, 2, 3)
    返回结果为
    (1, 2, 3)
    是一个元组
    另外可以参考下以下函数可以发现什么?
    def calc(*numbers):
        sum = 0
        for n in numbers:
            sum = sum + n * n
        return sum
    这样多个参数没问题,如果传入是一个元组或者列表呢?可以这样子
    Python允许你在list或tuple前面加一个*号,把list或tuple的元素变成可变参数传进去
    >>> nums = [1, 2, 3]
    >>> calc(*nums)
    14

    *nums表示把nums这个list的所有元素作为可变参数传进去。这种写法相当有用,而且很常见。
    其余的以后再总结
    感谢廖雪峰的python教程

  • 相关阅读:
    phpExcel常用方法详解 F
    简单的图片变色方法 F
    TCP协议数据包及攻击分析
    你好世界
    团队项目 第一次作业
    NOIP提高组(2018)考试技巧及注意事项
    ACM常用模板数论
    ACM常用模板图论
    ACM常用模板数据结构
    I'm Coming
  • 原文地址:https://www.cnblogs.com/hh2737/p/8144988.html
Copyright © 2011-2022 走看看