zoukankan      html  css  js  c++  java
  • python 笔记2--函数

    函数变量

    >>> a = abs # 变量a指向abs函数
    >>> a(-1) # 所以也可以通过a调用abs函数
    1
    

    定义函数

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

    默认参数陷阱

    所以,定义默认参数要牢记一点:默认参数必须指向不变对象!
    例如None或常量

    可变参数

    本质是一个list和tuple
    但是可以在参数上加个*号

    def calc(*numbers):
    函数体

    当想把list或tuple传进这个参数也可以

    nums = [1, 2, 3]
    calc(*nums)

    关键字参数

    略难理解

    关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict
    def person(name, age, **kw):
    print('name:', name, 'age:', age, 'other:', kw)

    • 只传必须参数
    >>> person('Michael', 30)
    name: Michael age: 30 other: {}
    
    • 也可以传入任意个数的关键字参数:
    >>> person('Bob', 35, city='Beijing')
    name: Bob age: 35 other: {'city': 'Beijing'}
    >>> person('Adam', 45, gender='M', job='Engineer')
    name: Adam age: 45 other: {'gender': 'M', 'job': 'Engineer'}
    
    • 直接传入dict
    >>> extra = {'city': 'Beijing', 'job': 'Engineer'}
    >>> person('Jack', 24, **extra)
    name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}
    

    命名关键字参数

    • 定义
    def person(name, age, *, city, job):
        print(name, age, city, job)
    
    • 必须这样调用
    >>> person('Jack', 24, city='Beijing', job='Engineer')
    Jack 24 Beijing Engineer
    
    • 感觉这种用法没有什么卵用

    参数组合

    • 参数定义的顺序

    参数定义的顺序必须是:必选参数、默认参数、可变参数/命名关键字参数和关键字参数。

    f(*args, **kw)

    • arg中元素依次赋值给必选参数,默认参数,可变参数。
    • kw中元素依次给命名关键词参数和关键词参数
  • 相关阅读:
    Python-控制流
    字符串创建运算符#
    Python-操作符和表达式
    Python-基础数据类型
    重载、重写和隐藏
    java加载jdbc驱动三种方式的比较
    Mysql 索引复习笔记
    Java中如何指定跳出多重嵌套循环
    LeetCode第[2]题(Java):Add Two Numbers (链表相加)——Medium
    LeetCode第[26]题(Java):Remove Duplicates from Sorted Array 标签:Array
  • 原文地址:https://www.cnblogs.com/zy691357966/p/5480320.html
Copyright © 2011-2022 走看看