定义函数
python用 def 关键字来定义一个函数:
PY def sayHello():
print 'hello python'
sayHello()
函数参数
和Javascript一样,可以指定传入的参数,
PY
def printMax(a,b):
if a > b :
print a ,"is maximum"
else:
print b,'is maximum'
printMax(1,34) #==> 34 is maximum
默认参数
比JavaScript方便的是,python中可以在参数上就直接指定默认值:
PY
def say(msg,time=1):
print msg * time
#使用time的默认值
say('hello') #==> hello
say('hello',3) #==> hellohellohello
关键参数
如果你的某个函数有许多参数,而你只想指定其中的一部分,那么你可以通过命名来为这些参数赋值——这被称作 关键参数 ——我们使用名字(关键字)而不是位置(我们前面所一直使用的方法)来给函数指定实参。
这一点和JavaScript中的定义是很不一样的,在JavaScript的函数中,我们只能通过位置来指定。
python中这样做有两个 优势 ——一,由于我们不必担心参数的顺序,使用函数变得更加简单了。二、假设其他参数都有默认值,我们可以只给我们想要的那些参数赋值。
PY
def func(a,b=1,c=3):
print 'a=',a,' b=',b,' c=',c
func(1,2,3)
func(1,c=23)
func(b=3,a=12)
局部变量
和JavaScript一样,python也有局部变量
py
x = 10
def changX(num):
x = num
changX(13)
print x #==>10
由于python中定义变量不需要象JavaScript中那样用 var 来定义,所以上例中 changX 函数中的 x 相当于是重新定义了一个变量,并不会和changX外的 x = 10 这个变量搞混。那可不可以指定使用 x = 10 这个变量呢?
使用global语句
如果你想要为一个定义在函数外的变量赋值,那么你就得告诉Python这个变量名不是局部的,而是 全局 的。我们使用global语句完成这一功能。没有global语句,是不可能为定义在函数外的变量赋值的。
PY
x = 10
def changX(num):
global x
x = num
changX(13)
print x #==>13
return语句
和JavaScript中的return有相同的功能,唯一的不同是如果我们没有指定return,那么python将在函数最后暗含一个 return None
DocStrings
注释总是那么重要,Python有一个很奇妙的特性,称为 文档字符串 ,它通常被简称为 docstrings 。DocStrings是一个重要的工具,由于它帮助你的程序文档更加简单易懂,你应该尽量使用它。你甚至可以在程序运行的时候,从函数恢复文档字符串!
文档字符串的惯例是一个多行字符串,它的首行以大写字母开始,句号结尾。第二行是空行,从第三行开始是详细的描述。 强烈建议 你在你的函数中使用文档字符串时遵循这个惯例。
一个例子:
py
def changX(num):
""" 修改x。
修改全局中x的值
"""
global x
x = num
我们可以使用 help(changX)来打印注释,也可以通过 changX.__doc__来获得。
概括
上述讲的这些已经覆盖了大多数的日常使用,但这并不是全部,后续会慢慢更新。