• Python tutorial阅读之函数的定义与使用


    函数的定义

    Python 使用关键字def定义函数,格式与C语言类似,但是没有返回类型,参数也不需要设置类型。

    def add(a, b):
        """这是函数的文档字符串"""
        return a + b
    
    def append(data):
        data.append(a) #如果data为可变对象时候,例如List、Dict,则会改变实参的值
        
    

    函数调用 会为函数局部变量生成一个新的符号表。确切的说,所有函数中的变量赋值都是将值存储在局部符号表。变量引用首先在局部符号表中查找,然后是包含函数的局部符号表,然后是全局符号表,最后是内置名字表。因此,全局变量不能在函数中直接赋值(除非用 global 语句命名),尽管他们可以被引用。

    Python参数传递采用的肯定是“传对象引用”的方式。这种方式相当于传值和传引用的一种综合。如果函数收到的是一个可变对象(比如字典或者列表)的引用,就能修改对象的原始值--相当于通过“传引用”来传递对象。如果函数收到的是一个不可变对象(比如数字、字符或者元组)的引用,就不能直接修改原始对象--相当于通过“传值'来传递对象。


    参数

    默认参数: 为参数设定默认值,调用函数时,如果没有值即使用默认值。

    def login(username,password = "123"):
        """登录函数"""
        pass
    
    login("admin")
    login("admin","password")
    
    def f(a, L=[]):
        L.append(a)
        return L
    
    print(f(1))
    print(f(2))
    print(f(3))
    # 输出结果
    [1]
    [1, 2]
    [1, 2, 3]
    
    >>> def f(x = []):
    ...     x.append(1)
    ...     print(id(x))
    ... 
    >>> f()
    140693834878408
    >>> f()
    140693834878408
    >>> f()
    140693834878408
    >>> 
    
    

    关键字参数调用:即指定形式key = value来调用函数,关键字参数应该在位置参数后面。

    def parrot(voltage, state='a stiff', action='voom', type='Norwegian Blue'):
        print("-- This parrot wouldn't", action, end=' ')
        print("if you put", voltage, "volts through it.")
        print("-- Lovely plumage, the", type)
        print("-- It's", state, "!")
    
    # 以下调用均是错误的
    parrot()                     # 必须参数没有
    parrot(voltage=5.0, 'dead')  # 关键字参数必须在位置参数之后
    parrot(110, voltage=220)     # **任何参数都不可以多次赋值**
    parrot(actor='John Cleese')  # 不存在该参数名
    #可变参数,有时候我们参数的数量是不定的,则可以使用*
    >>> def sum(*num):
    ...     s = 0
    ...     for x in num:
    ...             s += x
    ...     print(s)
    ... 
    >>> sum(1,2,3,4,5,6)
    21
    >>> num = [1,2,3,4]
    >>> sum(*num)
    10
    
    
    # 数量可变的关键字参数
    
    >>> def register(username, password, **info):
    ...     for key, value in info.items():
    ...             print(key + ":" + value)
    ... 
    >>> register('1', '2', sex = "boy", age = "20")
    sex:boy
    age:20
    >>> 
    
    # *args 必须之后的必须是关键字参数
    
    

    Lambda表达式

    >>> def make_incrementor(n):
    ...     return lambda x: x + n
    ...
    >>> f = make_incrementor(42)
    >>> f(0)
    42
    >>> f(1)
    43
    

    文档字符串

    >>> def sum(*num):
    ...     """This is used to cal sum """
    ...         
    >>> print(sum.__doc__)
    This is used to cal sum 
    
    

    编码风格

    使用 4 空格缩进,而非 TAB
    在小缩进(可以嵌套更深)和大缩进(更易读)之间,4空格是一个很好的折中。TAB 引发了一些混乱,最好弃用
    折行以确保其不会超过 79 个字符
    这有助于小显示器用户阅读,也可以让大显示器能并排显示几个代码文件
    使用空行分隔函数和类,以及函数中的大块代码
    可能的话,注释独占一行
    使用文档字符串
    把空格放到操作符两边,以及逗号后面,但是括号里侧不加空格:a = f(1, 2) + g(3, 4)
    统一函数和类命名
    推荐类名用 驼峰命名, 函数和方法名用 小写_和_下划线。总是用 self 作为方法的第一个参数(关于类和方法的知识详见 初识类 )
    不要使用花哨的编码,如果你的代码的目的是要在国际化环境。Python 的默认情况下,UTF-8,甚至普通的 ASCII 总是工作的最好
    同样,也不要使用非 ASCII 字符的标识符,除非是不同语种的会阅读或者维护代码。

  • 相关阅读:
    Dark 运算符
    Dark 数据类型
    分支管理
    Git 远程仓库
    DELPHI实现百度开放平台
    win2008使用FireDac连接ORACLE数据库问题
    20160115学习日志
    20160113第一个ANDRIOD开发日志
    struts2漏洞与修复
    DELPHI XE5 与SQLITE
  • 原文地址:https://www.cnblogs.com/xmxj0707/p/8448404.html
Copyright © 2020-2023  润新知