zoukankan      html  css  js  c++  java
  • 7.python-函数参数

    # 函数参数
    # 参数定义的顺序必须是:必选参数、默认参数、可变参数和关键字参数
    
    #===================================================
    # 默认参数,及普通参数在函数调用时的规则
    def student(name, gender, age=10, city='beijing'):
        print('name:', name, ',gender:', gender, ',age:', age, ',city:', city)
    
    
    # 采用如下方式可以不管函数定义时参数列表的顺序
    student(name='xiaoming', gender='M')  # name: xiaoming ,gender: M ,age: 10 ,city: beijing
    student(gender='M', name='xiaoming')  # name: xiaoming ,gender: M ,age: 10 ,city: beijing
    
    student('xiaoming', 'M', 'wuhan')  # name: xiaoming ,gender: M ,age: wuhan ,city: beijing
    student('xiaoming', 'M', 9, 'wuhan')  # name: xiaoming ,gender: M ,age: 9 ,city: wuhan
    
    # 如需跳过age直接给city赋值,方式如下
    student('xiaoming', 'M', city='wuhan')  # name: xiaoming ,gender: M ,age: 10 ,city: wuhan
    
    
    #===================================================
    # 默认参数的一个坑
    def append(l=[]):
        l.append('End')
        print(l)
    
    
    append()  # ['End']
    append()  # ['End', 'End']
    
    
    # 注:上面两行代码直观上像是默认参数初始值改变了,
    # 其实默认参数l在两次调用其代表的对象都是函数初始化
    # 时产生的列表,只是这个列表的内容发生了变化
    
    # 解决方法,如下
    def append_no_bug(l=None):
        if l is None:
            l = []
        l.append('End')
        print(l)
    
    
    append_no_bug()  # ['End']
    append_no_bug()  # ['End']
    
    
    #===================================================
    # 可变参数和(列表、元组)类型参数的区别
    
    def numbers(numbers):
        print(sum(numbers))
    
    
    def numbers_mutable(*numbers):
        print(sum(numbers))
    
    
    # numbers(1,2,3) #TypeError: numbers() takes 1 positional argument but 3 were given
    numbers([1, 2, 3])  # 6
    numbers((1, 2, 3))  # 6
    numbers_mutable(1, 2, 3)  # 6
    # numbers_mutable([1,2,3]) #TypeError: unsupported operand type(s) for +: 'int' and 'list'
    a = [1, 2, 3, 4]
    numbers_mutable(a[0], a[1], a[2], a[3])  # 10
    numbers_mutable(*a)  # 10
    
    
    #===================================================
    # 关键字参数
    def person(name, age, **other):
        print('name:', name, ',age:', age, ',other:', other)
    
    
    person('Yue', 18)  # name: Yue ,age: 18 ,other: {}
    person('Yue', 18, city='wuhan')  # name: Yue ,age: 18 ,other: {'city': 'wuhan'}
    other = {'city': 'wuhan', 'province': 'hubei'}
    person('Yue', 18, **other)  # name: Yue ,age: 18 ,other: {'city': 'wuhan', 'province': 'hubei'}
  • 相关阅读:
    【20171104中】chrome自动刷新网页
    【20171104早】python爬虫之username,password登陆
    【20171103中】sqli-libs Less 40-49
    .net orm类库 kiss.data 简单文档记录
    elasticsearch文档-字段的mapping
    elasticsearch文档-analysis
    elasticsearch文档-modules
    使用logstash+elasticsearch+kibana快速搭建日志平台
    Go语言Web框架gwk介绍 (五)
    Go语言Web框架gwk介绍 (四)
  • 原文地址:https://www.cnblogs.com/wjc920/p/9256157.html
Copyright © 2011-2022 走看看