前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python入门-2:函数与字典

python入门-2:函数与字典

作者头像
王诗翔呀
发布2020-11-13 10:46:55
8080
发布2020-11-13 10:46:55
举报
文章被收录于专栏:优雅R

函数

带名字的代码块,用来完成具体的工作。

函数的结构

函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。函数内容以冒号起始,并且缩进。return 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。

创建一个简单的hello函数

代码语言:javascript
复制
>>> def hello():
...     print('hello,world')
...
>>> hello()
hello,world
参数

定义函数时()里面的参数是形参,输入的值为实参,下面的列子中hello(x)为形参,7为实参

代码语言:javascript
复制
>>> def hello(x):
...     return x
>>> hello(7)
7
默认值

我们可以在参数里面定义自己的默认值

代码语言:javascript
复制
>>> def hello(x,y):
...     return x-y
...
>>> hello(3,7)
-4
返回值

函数返回的值为返回值

代码语言:javascript
复制
>>> def hello(x):
...     return x*3
...
>>> hello(3)
9

如果传入的不是不可修改的对象比如传入的是个整数或者浮点数,函数里面虽然修改了值,但是不会改变原始对象。

如果传入的十个列表,函数里面引用的就还是这个列表,函数改变,原始变量也会改变

代码语言:javascript
复制
>>> def hello(x):
...     x=2
...
>>> x=3
>>> print(x)
3
>>> hello(x)
>>> print(x)
3            

我们可以发现x并没有变为2

代码语言:javascript
复制
>>> def hello(x):
...     x[1]=2
>>> x=[2,4,6]
>>> hello(x)
>>> print(x)
[2, 2, 6]

可以看到x执行这个函数后改变了里面的值

返回字典

代码语言:javascript
复制
>>>def person(name,score):
    person= {'name':name,'score':score}
    return person
>>>person("Tom",90)
{'name': 'Tom', 'score': 90}

函数里面嵌套函数

下面的举例是函数里面嵌套函数,返回值返回的是个function,里面的x都是fun这个函数的参数x

代码语言:javascript
复制
>>>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

结合使用函数和while循环

代码语言:javascript
复制
>>>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

传递列表

我们可以在函数中加入循环传递列表的内容

代码语言:javascript
复制
>>> def hello(x):
...     for name in x:
...         print('hello'+name+'!')
...
>>> t=['tom','mary','hh']
>>> hello(t)
hellotom!
hellomary!
hellohh!

传递任意数量的实参

在形参中加入*,表示可以传入不止一个实参

代码语言:javascript
复制
>>> def vegetable(*x):
...     print(x)
...
>>> vegetable('spinage')
('spinage',)
>>> vegetable('spinage','chinese leaf')
('spinage', 'chinese leaf')

字典

在python中,字典是一系列的键值对,每个键都与一个值相关联,可以用键来访问对应的值,与键相对应的可以是数字,字符串,列表乃至字典。

如果想要把一个班级的同学的姓名成绩保存在一个列表中,可以使用列表加元组的方式

代码语言:javascript
复制
data=[('tom',89),('mary',90),('haha',100)]
data
代码语言:javascript
复制
[('tom', 89), ('mary', 90), ('haha', 100)]

对于上面的列表如果我们想要查询列表里面有没有tom这个同学,就需要对列表里面的所有进行比较,会比较慢,所以想要根据某个特征查询所对应的值,就是字典的形式。由key_value构成的键值对,数据结构里面叫map,python里面就是字典

下面我们创建一个字典

代码语言:javascript
复制
scores={'tom':90,'mary':80,'mike':70,'jak':100}
scores
代码语言:javascript
复制
{'tom': 90, 'mary': 80, 'mike': 70, 'jak': 100}
代码语言:javascript
复制
len(scores)### 查看有多少个键值对
代码语言:javascript
复制
4

使用字典

代码语言:javascript
复制
scores['tom'] ###根据键tom得到对应的值90
代码语言:javascript
复制
90
代码语言:javascript
复制
scores.get('tom')
代码语言:javascript
复制
90
代码语言:javascript
复制
scores['bob']=88 ###字典里添加键值对
代码语言:javascript
复制
scores
代码语言:javascript
复制
{'tom': 90, 'mary': 80, 'mike': 70, 'jak': 100, 'bob': 88}
代码语言:javascript
复制
scores['tom']='toom' ###修改字典中的值
scores
代码语言:javascript
复制
{'tom': 'toom', 'mary': 80, 'mike': 70, 'jak': 100, 'bob': 88}
代码语言:javascript
复制
del scores['tom'] ####删除键值对
scores
代码语言:javascript
复制
{'mary': 80, 'mike': 70, 'jak': 100, 'bob': 88}

遍历字典

代码语言:javascript
复制
scores
代码语言:javascript
复制
{'mary': 80, 'mike': 70, 'jak': 100, 'bob': 88}
代码语言:javascript
复制
for key,value in scores.items(): ###遍历所有的键值对
    print(key)
    print(value)
代码语言:javascript
复制
mary
80
mike
70
jak
100
bob
88
代码语言:javascript
复制
for name in scores.keys(): #####遍历所有的键
    print(name)
代码语言:javascript
复制
mary
mike
jak
bob
代码语言:javascript
复制
for score in scores.values(): ####遍历所有的值
    print(score)
代码语言:javascript
复制
80
70
100
88
代码语言:javascript
复制
scoresheet={'mike':(60,80,90),'tom':(80,70,99),'mary':(78,90,57)}
for key in scoresheet.keys():
    print(key,scoresheet[key])
代码语言:javascript
复制
mike (60, 80, 90)
tom (80, 70, 99)
mary (78, 90, 57)

字典列表

将字典包含在列表中

代码语言:javascript
复制
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
代码语言:javascript
复制
[{'hh': 1, 'hhw': 2, 'hhh': 3},
 {'yy': 1, 'yyy': 2, 'yyyy': 3},
 {'uu': 1, 'uuu': 2, 'uuuu': 3}]
代码语言:javascript
复制
for alien in alionall:
    print(alien)
代码语言:javascript
复制
{'hh': 1, 'hhw': 2, 'hhh': 3}
{'yy': 1, 'yyy': 2, 'yyyy': 3}
{'uu': 1, 'uuu': 2, 'uuuu': 3}
代码语言:javascript
复制
for alien in alionall[:2]:
    print(alien)
代码语言:javascript
复制
{'hh': 1, 'hhw': 2, 'hhh': 3}
{'yy': 1, 'yyy': 2, 'yyyy': 3}

在字典中储存列表

代码语言:javascript
复制
apple={'color':['red','yellow'],
      'shape':['round','square']}
代码语言:javascript
复制
for things in apple.values():
    print(things)
代码语言:javascript
复制
['red', 'yellow']
['round', 'square']
代码语言:javascript
复制
for key in apple.keys():
    print(key)
代码语言:javascript
复制
color
shape

在字典中包含字典

代码语言:javascript
复制
people={'tom':{'math':80,'english':90},
       'mary':{'math':90,'english':70}}
for name,project in people.items():
    print(name,project)
代码语言:javascript
复制
tom {'math': 80, 'english': 90}
mary {'math': 90, 'english': 70}
代码语言:javascript
复制
for name,pro in people.items():
    print(name,pro)
代码语言:javascript
复制
tom {'math': 80, 'english': 90}
mary {'math': 90, 'english': 70}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-11-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 优雅R 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 函数
    • 函数的结构
      • 参数
      • 默认值
      • 返回值
    • 结合使用函数和while循环
      • 传递列表
        • 传递任意数量的实参
        • 字典
          • 使用字典
            • 遍历字典
              • 字典列表
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档