08:函数的返回值、作用域,内置函数的使用、高级内置函数的使用

以下内容仅做自己学习使用,知识点内容来自柠檬班,转载请标记来源

@Author:木又
@File:demo1_函数的返回值py
@Time:2020/7/16 20:37
@Name:Ta Quan Ge

函数返回值:通过关键字return来定义

不写return或者return后面不写内容:返回None

return后面返回1个值,返回就是该数据

return后面返回1个以上值,返回的是一个元组

(判断方法是否有返回值的快捷方法,按住 ctrl + 鼠标移入此方法上,
尖括号指向的是none就没有返回值)

注意点:函数执行到return就会结束函数的运行,并返回结果

不写return或者return后面不写内容:返回None

li = [1, 23, 4]
res = li.append(5)
#为啥append这个方法调用之后,用变量接收不到结果(是因为此方法没有定义返回值)
print(res)

return后面返回1个值,返回就是该数据

#计算两值相加并返回结果
def fun(a, b):
    c = a + b
    return c

result = fun(1, 2)
print("函数调用后返回的结果:", result)
#return后面返回1个以上值,返回的是一个元组
def fun(a, b):
    c = a + b
    d = a - b
    return c, d      # return后面返回1个以上值,返回的是一个元组

a = fun(1, 2)
print(a)    # 打印结果 (3, -1)

res1, res2 = fun(1, 2)      # 使用元组拆包
print(res1)
print(res2)

注意点:函数执行到return就会结束函数的运行,并返回结果

def demo1(a, b):
    c = a + b
    d = a - b
    print("------1--------")
    return c, d        # 执行到return就会结束函数的运行,并返回结果
    print("------2--------")
res1, res2 = demo1(1, 2)
print(res1)
print(res2)


def demo1(a, b):
    c = a + b
    d = a - b
    print("------1--------")
    if c == d:
        return c, d
    print("------2--------")

# res1, res2 = demo1(1, 2)
# print(res1)
# print(res2)
demo1(1,2)

@Author:木又
@File:demo2_函数作用域.py
@Time:2020/7/16 20:42
@Name:Ta Quan Ge

函数的作用域:
全局变量:python中直接定义在模块(py文件中的变量),叫全局变量
问题一:定义在全局变量函数中可不可以使用?

局部变量:定义在函数中的变量,叫做局部变量

建议:全局变量与局部变量定义是不要重名

在函数内部声明全局变量 :global
‘’’

# a = 100     # 全局变量
# def demo():
#     b = 200   # 局部变量
#     print("函数中打印:", a)
#     print("函数中打印:", b)
#
#
# demo()

# print(b)   # NameError: name 'b' is not defined
# 在函数内部声明全局变量  :global
# def demo1():
#     global aa  # 声明一个全局变量 global
#     aa = 111
#
#
# demo1()
# print(aa)


# 就近原则
num = 100
def fun():
    num = 200
    print("函数中打印num:", num)    # 就近原则


fun()

print("函数外面:", num * 10)

@Author:木又
@File:demo3_内置函数的使用.py
@Time:2020/7/16 21:11
@Name:Ta Quan Ge
‘’’
获取数据长度 len()

求和 sum

求最大值 max

求最小值 min

 int float bool str list tuple dict set range

获取数据长度 len()

# li = [1, 23, 4]
# tu = (1, 23, 4)
# dic = {1, 23, 4, 5, 6}
# print(len(li))
# print(len(tu))
# print(len(dic))

求和 sum

# li = [1, 23, 4]
# tu = (1, 23, 4)
# dic = {"a": 1, "b": 23, "c": 4, "d": 5, "e": 6}
# res = sum(li) + sum(tu) + sum(dic.values())
# print(res)

求最大值 max

# li = [1, 23, 4]
# tu = (1, 23, 4)
# dic = {"a": 1, "b": 23, "c": 4, "d": 5, "e": 6}
# print(max(li))
# print(max(tu))
# print(max(dic.values()))

求最小值 min

li = [1, 23, 4]
tu = (1, 23, 4)
dic = {"a": 1, "b": 23, "c": 4, "d": 5, "e": 6}
print(min(li))
print(min(tu))
print(min(dic.values()))

获取数据的布尔值 bool
python所有的数据都有布尔值 非零为True:数据值等于0,或者数据值为None,返回False

a = "0"
print(bool(a))

# int float bool str list tuple dict set range

# int类型转换
a = '1'
a1 = int(a)
print(a,type(a1))

num = str(1000)
print(type(num))

@Author:木又
@File:demo4_高级的内置函数使用.py
@Time:2020/7/16 21:27
@Name:Ta Quan Ge

内置函数:
enumerate:利用他可以同时获取序列类型数据的下标和值

eval():可以识别字符串中有效的python表达式(去除字符串的引号)

filter:过滤器函数

enumerate 打印序列类型中的每个元素以及下标

li = ["a", "b", 1, 23, 4]
# res = enumerate(li)
for i, v in enumerate(li):
    print(f"下标{i},值{v}")

eval() 识别字符串中有效的表达式

a = "[1,2,3,5]"
b = "{1,2,3,5,6}"
c = "1>2"

res = eval(a)
print(res)

res1 = eval(b)
print(res1)

res2 = eval(c)
print(res2)

filter() 过滤函数
需求:获取字典中值大于2的键值对,放到一个新的字典中

#方法一:

dic = {"a": 1, "b": 2, "c": 3, "d": 4}

new_dic = {}
for k, v in dic.items():
    if v > 2:
        new_dic[k] = v
print(new_dic)

#方法二:

li = [11, 22, 33, 44, 55, 66, 77, 88, 99]


def fun(x):
    return 60 > x > 30  # 在30到60 之间的数


res = filter(fun, li)
print(list(res))

#方法三:扩展
#匿名函数 :lambda表达式(适合函数中只有一行代码的简单函数)

lambda 参数:返回值

li = [11, 22, 33, 44, 55, 66, 77, 88, 99]
res = filter(lambda x: 60 > x > 40, li)
print(list(res))

#zip()聚合打包

a = ["name", "age", "gender", "url"]
b = ["小明", 18, "男"]
res = dict(zip(a, b))
print(res)  # {'name': '小明', 'age': 18, 'gender': '男'}


# 需求:现有数据入下,将其转化成键值对形式并保存在列表中的格式保存
# user = ["name", "age", "gender"]
# user_info = [["小明", 18, "男"], ["小李", 19, "女"]]

# 如:[{'name': '小明', 'age': 18, 'gender': '男'},
# {'name': '小李', 'age': 19, 'gender': '女'}]

user = ["name", "age", "gender"]
user_info = [["小明", 18, "男"], ["小李", 19, "女"]]
list = []
for i in user_info:
    # print(i)
    dic = dict(zip(user, i))
    list.append(dic)
print(list)

@Author:木又
@File:work_08day.py
@Time:2020/7/16 23:13
@Name:Ta Quan Ge

第一题:请封装一个函数,按要求实现数据的格式转换
传入参数: data = ["{‘a’:11,‘b’:2}", “[11,22,33,44]”]
返回结果:res = [{‘a’: 11, ‘b’: 2}, [11, 22, 33, 44]]
通过代码将传入参数转换为返回结果所需数据,然后返回

def fun(data):
    li = []
    for i in data:
        li.append(eval(i))
        # return a
    return li
    # print(res)


res = fun(data=["{'a':11,'b':2}", "[11,22,33,44]"])
print(res)

第二题:请封装一个函数,完成如下数据格式转换
传入参数:
cases = [
[‘case_id’, ‘case_title’, ‘url’, ‘data’, ‘excepted’],
[1, ‘用例1’, ‘www.baudi.com’, ‘001’, ‘ok’],
[2, ‘用例2’, ‘www.baudi.com’, ‘002’, ‘ok’],
[3, ‘用例3’, ‘www.baudi.com’, ‘002’, ‘ok’],
[4, ‘用例4’, ‘www.baudi.com’, ‘002’, ‘ok’],
[5, ‘用例5’, ‘www.baudi.com’, ‘002’, ‘ok’],
]

返回结果
cases02 = [
{‘case_id’: 1, ‘case_title’: ‘用例1’, ‘url’: ‘www.baudi.com’, ‘data’: ‘001’, ‘excepted’: ‘ok’},
{‘case_id’: 2, ‘case_title’: ‘用例2’, ‘url’: ‘www.baudi.com’, ‘data’: ‘002’, ‘excepted’: ‘ok’},
{‘case_id’: 3, ‘case_title’: ‘用例3’, ‘url’: ‘www.baudi.com’, ‘data’: ‘002’, ‘excepted’: ‘ok’},
{‘case_id’: 4, ‘case_title’: ‘用例4’, ‘url’: ‘www.baudi.com’, ‘data’: ‘002’, ‘excepted’: ‘ok’},
{‘case_id’: 5, ‘case_title’: ‘用例5’, ‘url’: ‘www.baudi.com’, ‘data’: ‘002’, ‘excepted’: ‘ok’}
]

def fun(cases):
    cases02 = []
    a = cases[0]
    for i in cases[1:]:
        b = i
        # print(b)
        res = zip(a, b)
        cases02.append(dict(res))
    print(cases02)


fun(cases=[
    ['case_id', 'case_title', 'url', 'data', 'excepted'],
    [1, '用例1', 'www.baudi.com', '001', 'ok'],
    [2, '用例2', 'www.baudi.com', '002', 'ok'],
    [3, '用例3', 'www.baudi.com', '003', 'ok'],
    [4, '用例4', 'www.baudi.com', '004', 'ok'],
    [5, '用例5', 'www.baudi.com', '005', 'ok'],
])


第三题:简单题
1、什么是全局变量?
答:全局变量:python中直接定义在模块(py文件中的变量),叫全局变量

2、什么是局部变量?
答:局部变量:定义在函数中的变量,叫做局部变量

3、函数内部如何修改全局变量(声明全局变量 )?
答:在定义的变量名之前加global

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值