前端如何学习Python——字典和函数|七日打卡

129 阅读3分钟

字典

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}