def func():
    return 'adfdsf'
res = func()
print(res) # adfdsf
"""# 函数内要想返回给调用者值
        必须用关键字return"""
"""
不写return
只写return
写return None
写return返回一个值
写return返回多个值
"""
# 不写return:函数默认返回None
# def func():
#     print('hahaha')
# res = func()
# print(res)
# 只写return:return除了可以返回值之外 还可以直接结束整个函数的运行
# 只写return 返回的也是None(None就表示什么都没有)
# def func():
#     l = ['jason','egon','tank']
#     while True:
#         for i in l:
#             if i == 'egon':  # 当i为egon的时候 直接结束函数运行
#                 # break
#                 return
#                 # print('asdasdkljlsjadl')  # 这一行代码拥有都不会运行
#             print(i)
# res = func()
# print(res)
# 写return None:跟上面的只写return是一样的
# def func():
#     return None
# res = func()
# print(res)
# 写return返回一个值:这个值可以是python任意数据类型
# def func():
#     return '123'
# def func1():
#     return [1,2,3]
# def func2():
#     return {'name':'jason'}
# def func3():
#     return (1,)
# def func4():
#     return {1,2,3,4,5}
# def func5():
#     return True
# print(func(),func1(),func2(),func3(),func4(),func5())
# 写return返回多个值:return会自动将多个值以元组的形式返回给调用者
"""
1.为什么组织成元祖返回
    函数不希望自己处理的结果被修改
2.如何不返回元祖
"""
def func():
    return 1, 2, 3, 4  # 返回的是(1, 2, 3, 4)
# res = func()
# print(res)
def func1():
    return 'a', 'b', 'c'  # ('a', 'b', 'c')
res = func1()
print(res)
def func2():
    return [1, 2, 3], [1, 2, 3], [1, 2, 3]  # ([1, 2, 3], [1, 2, 3], [1, 2, 3])
res1 = func2()
print(res1)
def func3():
    return {'name': 'jason'}, {'username': 'tank'}, {
        'user_name': 'egon'}  # ({'name': 'jason'}, {'username': 'tank'}, {'user_name': 'egon'})
res2 = func3()
print(res2)
# 返回多个值 并且不想让return帮你做处理  自己手动加上你想返回的数据类型符号
def func4():
    return [[1,2,3,4],[1,2,3,4],[1,2,34]]
res = func4()
print(res)
"""
1.所有的函数都有返回值,无论你写不写return
    python中所有的函数都有返回值 不写的情况下默认返回None
2.光写return 或者return None并不是为了考虑返回值 而是为了结束函数的运行
"""