python函数变量和内置函数

一、函数的作用域

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.最大值,最小值的内置函数【数值类型】

  • min 求最小值
  • max 求最大值
  • sum 求和

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:定义全局变量

"""

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值