函数的定义
Python 使用关键字def定义函数,格式与C语言类似,但是没有返回类型,参数也不需要设置类型。
def add(a, b): """这是函数的文档字符串""" return a + bdef append(data): data.append(a) #如果data为可变对象时候,例如List、Dict,则会改变实参的值
函数调用 会为函数局部变量生成一个新的符号表。确切的说,所有函数中的变量赋值都是将值存储在局部符号表。变量引用首先在局部符号表中查找,然后是包含函数的局部符号表,然后是全局符号表,最后是内置名字表。因此,全局变量不能在函数中直接赋值(除非用 global 语句命名),尽管他们可以被引用。
Python参数传递采用的肯定是“传对象引用”的方式。这种方式相当于传值和传引用的一种综合。如果函数收到的是一个可变对象(比如字典或者列表)的引用,就能修改对象的原始值--相当于通过“传引用”来传递对象。如果函数收到的是一个不可变对象(比如数字、字符或者元组)的引用,就不能直接修改原始对象--相当于通过“传值'来传递对象。
参数
默认参数: 为参数设定默认值,调用函数时,如果没有值即使用默认值。
def login(username,password = "123"): """登录函数""" passlogin("admin")login("admin","password")def f(a, L=[]): L.append(a) return Lprint(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:boyage: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 字符的标识符,除非是不同语种的会阅读或者维护代码。