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 字符的标识符,除非是不同语种的会阅读或者维护代码。

posted @ 2018-02-14 15:29  罗梁  阅读(170)  评论(0编辑  收藏  举报