Chapter 7
用户输入input()
input(字符串)
让程序暂停,等待用户输入文本。其中,“字符串”是显示在屏幕上的输入提示信息。注意,在python2.7
中,也有input()
,但是它将用户输入的东西理解为Python
代码,并尝试运行!此时,为了达到原来的目的,需要使用raw_input()
。- 创建多行字符串的方式。
+=
在原字符串的末尾添加一个字符串。
str = "First line."
str += "\nSecond line."
input()
将用户输入的东西,理解为字符串。即使输入数字,也理解为字符串。如果想使用数字,应当用int(数字字符串)
来对获得的“数字字符串”进行转换,成为数字。%
求模运算符。将两数相除,返回余数。
while
- 注意:
Python
中没有自增(++),自减(–)。类似的工作由+= 1
等完成。 break
语句,退出while
循环、for
循环。continue
语句,忽略循环中continue
下面的代码,回到循环的开头。- 可以通过
while
多次使用.remove(元素)
来删去列表中所有相应元素,而不仅仅只是第一个。
Chapter 8
函数
- 例子
def greet_user(username):
"""显示简单的问候语"""
print("Hello, " + username.title() + '!')
greet_user('jesse')
def
关键词:表示定义了函数。
注意:定义以冒号结尾。
""" """
,表示文档字符串的注释。用来生成有关程序中函数的文档。
- 当一个函数有多个参数的时候,根据各个参数的顺序是否起作用,可以使用
位置实参
和关键词实参
。
位置实参
,调用函数时,参数的顺序与定义函数时参数的顺序完全一致。关键词实参
,在实参中,直接将名称和值相互关联起来,因此不用再担心顺序。
例如
def describe_pet(pet_type, pet_name):
"""显示宠物的信息"""
print("I have a " + pet_type + ".")
print("My " + pet_type + "'s name is " + pet_name.title() + ".")
#关键词实参
describe_pet(pet_name="harry", pet_type="hamster")
#位置实参
describe_pet("hamster", "harry")
- 默认值
类似于C++中的函数参数默认值。有默认值的参数,必须写在没有默认值的参数的后面。
def describe_pet(pet_name, pet_type="hamster"):
"""显示宠物的信息"""
print("I have a " + pet_type + ".")
print("My " + pet_type + "'s name is " + pet_name.title() + ".")
#第一种调用方法
describe_pet("harry")
#第二种调用方法
describe_pet(pet_name="harry")
- 返回值
类似于C++中的函数返回值。同样,在经历了第一个return
之后,函数就会退出。
另外,函数可以返回任何类型的值。比如,列表,字典等等。 - 参数可以是列表等等。如果传入的是列表,那么,在函数中对列表所进行的所有修改都是永久性的。如果不希望函数对原来的列表本身进行修改,那么应该传入原来列表的副本,使用切片法。
function_name(list_name[:])
#这样传进去的是原来列表的副本
- 传入任意数量的实参
其原理是,传入一个元组(“不可更改的列表”)。注意,即使函数只收到一个值,其仍然会将该实参封装到元组中。
def make_pizza(*toppings):
"""用来接收原料和输出原料"""
for topping in toppings:
print("- " + topping)
make_pizza('potato','extra cheese')
注意:
1.*toppings
星号加元组名,表示新建空元组。
2. 当需要混用位置实参和任意数量的实参时,应该将任意数量的实参放在最后。Python会先匹配位置实参和关键词实参,再将剩下的参数收集到最后一个形参中。
- 传入任意数量的关键词实参
def build_profile(first, last, **user_info):
"""创建一个字典,其中包括我们所知道的关于用户的一切"""
profile = {}
profile['first_name'] = first
profile['last_name'] = last
for key, value in user_info.items():
profile[key] = value
return profile
user_profile = build_profile('albert', 'einstein', location='princeton', field='physics')
print(user_profile)
注意:
1.location = 'princeton'
的写法。
2.**user_info
两个星号表示新建字典。
- 将函数储存在模块中
我们可以通过导入整个模块,或导入模块中的特定函数,来使用模块中的函数。两种方法有差别。
导入整个模块
#在同一文件夹下,还有pizza.py,其中有函数make_pizza。
import pizza #不加.py后缀
pizza.make_pizza('potato','extra cheese')
注意:
1.import 文件名
导入整个模块。注意,不加
后缀.py
!
2. 在这种情况下,使用函数时,应当用点。模块名.函数名
3. 注意,“同一文件夹下”。
导入特定函数
from pizza import make_pizza
make_pizza('potato','extra cheese')
注意:
1.from 文件名 import 函数名
导入模块中的特定函数。如果要导入多个函数,函数名之间用逗号隔开即可。
2. 在这种情况下,因为已经显式地导入了函数,因此,使用函数时,不用加点。函数名
导入模块中的所有函数
from pizza import *
注意:
1. 使用*
来代替所有函数。
2. 这样一来,使用函数的时候,可以直接使用函数名,无需句点。然而,并不支持使用这种方法。因为当使用并非自己编写的大型模块时,模块中原有函数可能会与现有函数重名,从而发生覆盖等一系列意料之外的情况。最好的做法是,只导入需要的函数,或者导入整个模块并使用句点表示法。
- 使用
as
指定别名
如果导入模块中的函数名太长,或者和现有函数名存在冲突,则可以对其指定别名。
from pizza import make_pizza as mp
此后,便可以使用mp
。
同样地,也可以对模块指定别名。
import pizza as p
此后,便可使用p.函数名
。注意,这种情况下,模块中所有函数名都没有变。
- 格式
给形参指定默认值时,等号两边不要
留空格。调用函数时的关键词形参,也应遵守这种约定。
def function_name(parameter_0, parameter_1='default value')
function_name(value_0, parameter_1='value')
如果形参很多,可在函数定义中,输入左括号后按回车键,再在下一行按两次Tab键,从而将形参列表和只缩进一层的函数体区分开来。
如果代码包含多个函数,可使用两个空行把各个函数分开。
所有import
语句都应放在文件开头,除非前面有注释。