带名字的代码块,用来完成具体的工作。
函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。函数内容以冒号起始,并且缩进。return 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
创建一个简单的hello函数
>>> def hello():
... print('hello,world')
...
>>> hello()
hello,world
定义函数时()里面的参数是形参,输入的值为实参,下面的列子中hello(x)为形参,7为实参
>>> def hello(x):
... return x
>>> hello(7)
7
我们可以在参数里面定义自己的默认值
>>> def hello(x,y):
... return x-y
...
>>> hello(3,7)
-4
函数返回的值为返回值
>>> def hello(x):
... return x*3
...
>>> hello(3)
9
如果传入的不是不可修改的对象比如传入的是个整数或者浮点数,函数里面虽然修改了值,但是不会改变原始对象。
如果传入的十个列表,函数里面引用的就还是这个列表,函数改变,原始变量也会改变
>>> def hello(x):
... x=2
...
>>> x=3
>>> print(x)
3
>>> hello(x)
>>> print(x)
3
我们可以发现x并没有变为2
>>> def hello(x):
... x[1]=2
>>> x=[2,4,6]
>>> hello(x)
>>> print(x)
[2, 2, 6]
可以看到x执行这个函数后改变了里面的值
返回字典
>>>def person(name,score):
person= {'name':name,'score':score}
return person
>>>person("Tom",90)
{'name': 'Tom', 'score': 90}
函数里面嵌套函数
下面的举例是函数里面嵌套函数,返回值返回的是个function,里面的x都是fun这个函数的参数x
>>>def fun(x)
def fun2(y):
return x+y
return fun2
>>> a=fun(3) ######当我们设置a=fun(3)时我们相当于传入了参数x=3,返回的a是个fun2的function。
>>> type(a)
<class 'function'>
>>> a(8) ######如果我们再次传入参数,此时就相当于传入了y值。
11
>>>def person(name,score):
person= {'name':name,'score':score}
return person
while True:
print('please tell me your name and score:')
name=input('name:')
if name == 'q':
break
score=input('score:')
if score == 'q':
break
people=person(name,score)
print(people)
please tell me your name and score:
name:Tom
score:80
{'name': 'Tom', 'score': '80'}
please tell me your name and score:
name:q
我们可以在函数中加入循环传递列表的内容
>>> def hello(x):
... for name in x:
... print('hello'+name+'!')
...
>>> t=['tom','mary','hh']
>>> hello(t)
hellotom!
hellomary!
hellohh!
在形参中加入*,表示可以传入不止一个实参
>>> def vegetable(*x):
... print(x)
...
>>> vegetable('spinage')
('spinage',)
>>> vegetable('spinage','chinese leaf')
('spinage', 'chinese leaf')
在python中,字典是一系列的键值对,每个键都与一个值相关联,可以用键来访问对应的值,与键相对应的可以是数字,字符串,列表乃至字典。
如果想要把一个班级的同学的姓名成绩保存在一个列表中,可以使用列表加元组的方式
data=[('tom',89),('mary',90),('haha',100)]
data
[('tom', 89), ('mary', 90), ('haha', 100)]
对于上面的列表如果我们想要查询列表里面有没有tom这个同学,就需要对列表里面的所有进行比较,会比较慢,所以想要根据某个特征查询所对应的值,就是字典的形式。由key_value构成的键值对,数据结构里面叫map,python里面就是字典
下面我们创建一个字典
scores={'tom':90,'mary':80,'mike':70,'jak':100}
scores
{'tom': 90, 'mary': 80, 'mike': 70, 'jak': 100}
len(scores)### 查看有多少个键值对
4
scores['tom'] ###根据键tom得到对应的值90
90
scores.get('tom')
90
scores['bob']=88 ###字典里添加键值对
scores
{'tom': 90, 'mary': 80, 'mike': 70, 'jak': 100, 'bob': 88}
scores['tom']='toom' ###修改字典中的值
scores
{'tom': 'toom', 'mary': 80, 'mike': 70, 'jak': 100, 'bob': 88}
del scores['tom'] ####删除键值对
scores
{'mary': 80, 'mike': 70, 'jak': 100, 'bob': 88}
scores
{'mary': 80, 'mike': 70, 'jak': 100, 'bob': 88}
for key,value in scores.items(): ###遍历所有的键值对
print(key)
print(value)
mary
80
mike
70
jak
100
bob
88
for name in scores.keys(): #####遍历所有的键
print(name)
mary
mike
jak
bob
for score in scores.values(): ####遍历所有的值
print(score)
80
70
100
88
scoresheet={'mike':(60,80,90),'tom':(80,70,99),'mary':(78,90,57)}
for key in scoresheet.keys():
print(key,scoresheet[key])
mike (60, 80, 90)
tom (80, 70, 99)
mary (78, 90, 57)
将字典包含在列表中
alion={'hh':1,'hhw':2,'hhh':3}
alion2={'yy':1,'yyy':2,'yyyy':3}
alion3={"uu":1,'uuu':2,"uuuu":3}
alionall=[alion,alion2,alion3]
alionall
[{'hh': 1, 'hhw': 2, 'hhh': 3},
{'yy': 1, 'yyy': 2, 'yyyy': 3},
{'uu': 1, 'uuu': 2, 'uuuu': 3}]
for alien in alionall:
print(alien)
{'hh': 1, 'hhw': 2, 'hhh': 3}
{'yy': 1, 'yyy': 2, 'yyyy': 3}
{'uu': 1, 'uuu': 2, 'uuuu': 3}
for alien in alionall[:2]:
print(alien)
{'hh': 1, 'hhw': 2, 'hhh': 3}
{'yy': 1, 'yyy': 2, 'yyyy': 3}
在字典中储存列表
apple={'color':['red','yellow'],
'shape':['round','square']}
for things in apple.values():
print(things)
['red', 'yellow']
['round', 'square']
for key in apple.keys():
print(key)
color
shape
在字典中包含字典
people={'tom':{'math':80,'english':90},
'mary':{'math':90,'english':70}}
for name,project in people.items():
print(name,project)
tom {'math': 80, 'english': 90}
mary {'math': 90, 'english': 70}
for name,pro in people.items():
print(name,pro)
tom {'math': 80, 'english': 90}
mary {'math': 90, 'english': 70}