字典
Python 中的字典和 Javascript的对象基本是一样的。
添加键值对
user = {}
user[‘name’] = ‘david’
user[‘age’] = 18
print(user)
复制代码
{‘name’: ‘david’, ‘age’: 18}
复制代码
删除键值对
user = { ‘name’: ‘david’ }
del user[‘name’]
print(user)
复制代码
{}
复制代码
修改键值对
user = { ‘name’: ‘david’ }
user[‘name’] = ‘tom’
print(user)
复制代码
{‘name’: ‘tom’}
复制代码
函数
定义函数
def greet_user():
print(‘Hello’)
greet_user()
复制代码
向函数传递信息
def greet_user(username):
print(‘Heelo ‘ + username )
print(greet_user(‘Tom’))
复制代码
Hello Tom
复制代码
实参和形参
前面定义了 greet_user 函数,username 是形参,greet_user(‘Tom’) 的 ‘Tom’ 是实参。
传递实参
鉴于函数定义中可能包含多个形参,因此函数调用中也可能包含多个实参。向函数传递实参的方式很多,可使用位置实参,这要求实参的顺序与形参的顺序相同;也可使用关键字实参,其中每个实参都由变量名和值组成;还可使用列表和字典。下面来依次介绍这些方式。
位置实参
你调用函数时,Python必须将函数调用中的每个实参都关联到函数定义中的一个形参。为此,最简单的关联方式是基于实参的顺序。这种关联方式被称为位置实参。为明白其中的工作原理,来看一个显示宠物信息的函数。这个函数指出一个宠物属于哪种动物以及它叫什么名字,如下所示:
def describe_pet(animal_type, pet_name):
print(‘animal_type ‘ + animal_type)
print(‘pet_name is ‘ + pet_name)
describe_pet(‘cat’, ‘candy’)
复制代码
关键字实参数
def describe_pet(animal_type, pet_name):
print(‘animal_type ‘ + animal_type)
print(‘pet_name is ‘ + pet_name)
describe_pet(animal_type=’cat’, pet_name=’candy’)
复制代码
形参默认值
def describe_pet(animal_type, pet_name = ‘candy’):
print(‘animal_type ‘ + animal_type)
print(‘pet_name is ‘ + pet_name)
describe_pet(‘cat’)
复制代码
animal_type cat
pet_name is candy
复制代码
传递任意数量的实参
有时候,你预先不知道函数需要接受多少个实参,好在Python允许函数从调用语句中收集任意数量的实参。例如,来看一个制作比萨的函数,它需要接受很多配料,但你无法预先确定顾客要多少种配料。下面的函数只有一个形参*toppings,但不管调用语句提供了多少实参,这个形参都将它们统统收入囊中:
def make_pizza(*toppings):
print(toppings)
make_pizza(‘pepperoni’)
make_pizza(‘mushrooms’, ‘green peppers’, ‘cheese’)
复制代码
(‘pepperoni’,)
(‘mushrooms’, ‘green peppers’, ‘cheese’)
复制代码
结合使用位置实参和任意数量实参
如果要让函数接受不同类型的实参,必须在函数定义中将接纳任意数量实参的形参放在最后。Python先匹配位置实参和关键字实参,再将余下的实参都收集到最后一个形参中。例如,如果前面的函数还需要一个表示比萨尺寸的实参,必须将该形参放在形参*toppings的前面:
def make_pizza(size, *toppings):
print(toppings)
print(8, ‘mushrooms’, ‘green peppers’, ‘cheese’)
复制代码
基于上述函数定义,Python将收到的第一个值存储在形参size中,并将其他的所有值都存储在元组toppings中。在函数调用中,首先指定表示比萨尺寸的实参,然后根据需要指定任意数量的配料。
使用任意数量的关键字实参
有时候,需要接受任意数量的实参,但预先不知道传递给函数的会是什么样的信息。在这种情况下,可将函数编写成能够接受任意数量的键—值对——调用语句提供了多少就接受多少。一个这样的示例是创建用户简介:你知道你将收到有关用户的信息,但不确定会是什么样的信息。在下面的示例中,函数build_profile()接受名和姓,同时还接受任意数量的关键字实参:
def build_profile(first_name, last_name, **user_info):
user_profile = {};
user_profile[‘first_name’] = first_name
user_profile[‘last_name’] = last_name
for key, value in user_info.items():
user_profile[key] = value;
return user_profile
user = build_profile(‘aaa’, ‘bbb’, age=18, height=185)
print(user)
复制代码
{‘first_name’: ‘aaa’, ‘last_name’: ‘bbb’, ‘age’: 18, ‘height’: 185}
复制代码