1. def语句和参数
如果调用print()或len()函数,你会传入一些值放在括号之间,称为”参数”。
也可以自己定义接收参数的函数。
在文件编辑器中输入下面这个例子,将它保存为helloFunc2.py:
def hello(name):
print("Hello, " + name)
hello("John")
hello("Ichi")
2. 返回值和return语句
如果调用len()函数,并向它传入像‘Hello’这样的参数,函数调用就求值为整数5。
这是传入的字符串的长度。
一般来说,函数调用求值的结果,称为函数的”返回值”。
用def语句创建函数时,可以用return语句指定应该返回什么值。
return语句包含以下部分:
- return关键字。
- 函数应该返回的值或表达式。
如果在return语句中使用了表达式,返回值就是该表达式求值的结果。
例如,下面的程序定义了一个函数,它根据传入的数字参数,返回一个不同的字符串。
在文件编辑器中输入以下代码:
import random
def get_answer(number):
if number == 1:
return "It is certain"
elif number == 2:
return "It is decidedly so"
elif number == 3:
return "Without a doubt"
elif number == 4:
return "Yes - definitely"
elif number == 5:
return "You may rely on it"
elif number == 6:
return "As I see it, yes"
elif number == 7:
return "Most likely"
randomParams= random.randint(1,7)
print(get_answer(randomParams))
3. None值
在Python中有一个值称为None,它表示没有值。
None是NoneType数据类型的唯一值。
就像布尔值True和False一样,None的首字母N必须大写。
如果你希望变量中存储的东西不会与一个真正的值混淆,这个没有值的值就可能有用。
有一个使用None的地方就是print()函数的返回值。
print()函数在屏幕上显式文本,但它不需要返回任何值,这和len()函数或input()函数不同。
但既然所有函数调用都需要求值为一个要返回任何值,那么print()函数就返回None。
spam = print('HelloWorld')
None == spam
print(spam)
在幕后,对于所有没有return语句的函数定义,Python都会在末尾加上return None。
这类似于while或for循环隐式地以continue语句结尾。
而且,如果使用不带值的return语句,也返回None。
4. 关键字参数和print()函数
大多数参数是由它们在函数调用中的位置来识别的。
例如,random.randint(1,10)与random.randint(10,1)不同。
函数调用random.randint(1,10)将返回1到10之间的一个随机整数,而random,randint(10,1)
但是,”关键字参数”是在函数调用时由它们前面的关键字来识别的。
关键字参数通常用于”可选变元”。
例如,print()函数有可选的变元end和sep,分别指定在参数末尾输出什么,以及在参数之间输出什么来隔开它们。
如果运行以下程序:
print('Hello')
print('World')
输出结果将会时:
Hello
World
这两个字符串出现在独立的两行中,因为print()函数自动在传入的字符串末尾添加了换行符。
可以设置end关键字参数,将它变成另一个字符串。
例如,如果程序像这样:
print('Hello',end='')
print('World')
输出结果就会像这样:
HelloWorld
类似地,如果向Print()函数传入多个字符串值,该函数就会自动用一个空格分隔它们。
print('Hello','Lily','Nice To Meet You')
Hello Lily Nice To Meet You
你可以传入sep关键字参数,替换掉默认的分隔字符串。
print('Hello','Lily','Nice To Meet You',sep='-')
Hello-Lily-Nice To Meet You
5. global语句
如果需要在一个函数内修改全局变量,就使用global语句。
如果在函数的顶部有global eggs这样的代码,它是在告诉python:”在这个函数中,eggs指的是全局变量,所以不要用这个名字创建一个局部变量”。
例如,在文件编辑器中输入以下代码:
def spam():
global eggs
eggs = 'spam'
eggs = 'global'
spam()
print(eggs)
6. 异常处理
到目前为止,在Python程序中遇到错误或”异常”,就意味着整个程序崩溃。
错误可以由try和except语句来处理。
那些可能出错的语句被放在try子句中。
如果错误发生,程序执行就转到接下来的except子句开始处。
def spam(divideBy):
try:
return 42 / divideBy
except ZeroDivisionError:
print('Error: Invalid argument.')