一、函数的作用域
1.全局变量:
函数外部定义的变量:叫做全局变量,全局变量顾名思义就指定不管是函数内部还是函数外部都能够访问
2.局部变量:
局部变量,就是在函数内部定义的变量,仅限函数内部可以使用,在函数外部无法使用
注意点:
- 不同的函数,可以定义相同的名字的局部变量,但是各用个的不会产生影响
- 局部变量的作用,为了临时保存数据需要在函数中定义变量来进行存储,这就是它的作用
- 尽量不要在函数内部定义和全局变量同名的变量
- 如果必须要定义一个同名的变量,建议放在函数的最前面
3.声明全局变量global
在函数内部修改全局变量的值,使用global
使用global声明某个变量之后。那么这个变量在函数内进行的操作会对全局生效【及该变量,变为了全局变量】
例子
a = 100
def func7():
global a,b # 使用global声明某个变量之后。那么这个变量在函数内进行的操作会对全局生效
a = 999
b=888
print(a)
func7() #注意如果未调用该函数,则b的定义未生效,及 b 不是全局变量,只有执行后 b 才会成为全局变量
print("函数外面打印a:{}".format(a))
print(b)
输出:
999
函数外面打印a:999
888
二、内置函数
1.常见的内置函数
- print:输出
- input:输入
- type:查看数据类型
- id:获取数据内存地址
- range:生成数据
- len:获取数据的长度(元素总数)
- int,float,bool,str,list,tuple,dict,set:代表对应的数据类型
2.最大值,最小值的内置函数【数值类型】
3.python中高级内置函数
3.1 enumerate【面试】
enumerate利用它可以同时获得索引和值,--【元组形式】
例子:获取列表的下标和值
i1=[11,22,33,55]
res=enumerate(li1)
for i in res:
print(i)
输出:
(0, 11)
(1, 22)
(2, 33)
(3, 55)
例子:获取字典的下标和key值
li1=[11,22,33,55]
dic={"name":"hao","sex":"女"}
res=enumerate(dic)
for i in res:
print(i)
输出:
(0, 'name')
(1, 'sex')
3.2 eval,取出字符串内容
取出字符串中的内容
将字符串str当成有效的表达式来求指并返回计算结果【等同于把字符串的引号去掉】
# eval:识别字符串中有效的python表达式
例子
str1="{'name':'hao','sex':'女'}"
str2="[11,22,33,55]"
#将str1转换为字典,str2转换为列表
dic=eval(str1)
print(dic,type(dic))
li=eval(str2)
print(li,type(li))
输出:
{'name': 'hao', 'sex': '女'} <class 'dict'>
[11, 22, 33, 55] <class 'list'>
例子2:表达式
a=100
b=10
s="a>b"
print(eval(s))
输出:
True
例子3
s2='print("python26")'
eval(s2)
输出:
python26
3.3聚合打包zip
以短的为依据:短板效应
注意点:zip打包之后返回的数据,只能使用一次【两个列表之间】
例子
title = ["aa", "bb"]
value = [11, 22, 88]
ss=zip(title, value)
print(dict(ss))
print(list(ss))
输出:
{'aa': 11, 'bb': 22}
[]
例子1:列表-列表元组
li1=[1, 2, 3, 4,5]
li2=[11, 22, 33, 55]
li3=[111,222,333,444,555]
res=zip(li1,li2,li3)
print(res)
print(list(res))
输出:
<zip object at 0x00000205C6F62588>
[(1, 11, 111), (2, 22, 222), (3, 33, 333), (4, 55, 444)]
例子2:给予两组数据直接转换为字典
title = ["aa", "bb"]
value = [11, 22, 88]
print(dict(zip(title, value)))
输出:
{'aa': 11, 'bb': 22}
3.4 filter 过滤器,fiter(过滤规则,要过滤的数据)
过滤的原理:filter会将第二个参数中的数据,进行遍历,然后当成参数传入第一个参数(函数中),根据函数返回的结果是否为True,决定是否要将数据过滤出来
3.5iterable:可迭代对象
可以使用for循环进行遍历的都是可迭代对象
已学过数据类型(属于可迭代对象的):字符串,列表,元组,字典,range创建的数据
def func8(a):
print("这个是函数func")
print("这个是传入的参数a:",a)
li=[11,22,33,44]
res=filter(func8,li)
print(list(res))
输出:
这个是函数func
这个是传入的参数a: 11
这个是函数func
这个是传入的参数a: 22
这个是函数func
这个是传入的参数a: 33
这个是函数func
这个是传入的参数a: 44
[]
应该案例:请过滤列表li=[1,2,3,4,5,6,7,8,9]中大于5的数值
def func8(a):
return a>30
li=[11,22,33,44]
res=filter(func8,li)
print(list(res))
输出:
[33, 44]
三、函数和内置函数练习题
1.第一题:现有数据如下
users_title = ["name", "age", "gender"]
users_info = [['小明', 18, '男'], ["小李", 19, '男'], ["小美", 17, '女']]
要求:将上述数据转换为以下格式
users = [{'name': '小明', 'age': 18, 'gender': '男'},
{'name': '小李', 'age': 19, 'gender': '男'},
{'name': '小美', 'age': 17, 'gender': '女'}]
users_title = ["name", "age", "gender"]
users_info = [['小明', 18, '男'], ["小李", 19, '男'], ["小美", 17, '女']]
a = users_info[0]
b = users_info[1]
c = users_info[2]
print(a)
s1 = dict(zip(users_title, a))
s2 = dict(zip(users_title, b))
s3 = dict(zip(users_title, c))
print(s1)
users = []
users.append(s1)
users.append(s2)
users.append(s3)
print(users)
# 老师方法:
print("老师方法")
users_title = ["name", "age", "gender"]
users_info = [['小明', 18, '男'], ["小李", 19, '男'], ["小美", 17, '女']]
# 定义一个列表来存放转换之后的数据
users=[]
# 遍历user_info中的数据
for info in users_info:
# 把users_title和users_info进行聚合打包
data=zip(users_title,info)
# 转换为字典,添加到列表中
users.append(dict(data))
print(users)
#新的思路
users_title = ["name", "age", "gender"]
users_info = [['xiaoMing', 18, 'men'], ['xiaoLi', 19, 'men'], ['xiaoMei', 17, 'women']]
users = []
for index in range(len(users_info)):
print(index)
users.append(dict(zip(users_title,users_info[index])))
print(users)
2.第二题:请封装一个函数,按要求实现数据的格式转换
传入参数: data = ["{'a':11,'b':2}", "[11,22,33,44]"]
返回结果:res = [{'a': 11, 'b': 2}, [11, 22, 33, 44]]
通过代码将传入参数转换为返回结果所需数据,然后返回
data = ["{'a':11,'b':2}", "[11,22,33,44]"]
def func(m, n):
res = []
for i in data:
res.append(eval(i))
return res
s = func(*data)
print(s)
# 老师方法
print("老师方法")
li= ["{'a':11,'b':2}", "[11,22,33,44]"]
def work2(data):
# 创建一个新列表
new_data=[]
# 遍历列表中的数据
for i in data:
# 将数据用eval进行转换
res=eval(i)
# 将转换后的数据放入新列表
new_data.append(res)
return new_data
res=work2(li)
print(res)
3.第三题:简单题
3.1、什么是全局变量?
函数外部定义的变量:叫做全局变量,全局变量顾名思义就指定不管是函数内部还是函数外部都能够访问
3.2、什么是局部变量?
局部变量,就是在函数内部定义的变量,仅限函数内部可以使用,在函数外部无法使用
3.3、函数内部如何修改全局变量(声明全局变量 )?
在函数内部修改全局变量的值,使用global
使用global声明某个变量之后。那么这个变量在函数内进行的操作会对全局生效【及该变量,变为了全局变量】
3.4、写出已经学过的所有python关键字20个,分别写出用途?
关键字:
False :bool类型
True :bool类型
None :表示数据为空
and:逻辑运算符:与
or:逻辑运算符:或
not:逻辑运算符:非
is:身份运算符
in:成员运算符
del:删除数据
pass:表示通过(一般用来占位的)
if:条件判断
elif:条件判断
else:条件判断
while:条件循环
for:遍历循环
break:用来终止循环的
continue:中止当前本轮循环,开启下一轮循环
def定义函数
return函数的返回值
global:定义全局变量
"""
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)