Python学习-函数

#函数调用的三种形式
#
# 1 语句形式:foo()
# def foo() :
#     print('a')
#     return 1
# foo()

# 2 表达式形式:3*len('hello')
# def foo():
#     print('a')
#     return 1
# print(len(foo()))


# 3 当中另外一个函数的参数:range(len('hello'))
# def foo1(a):
#     # print(a)
#     return a
#
# def foo2():
#     # print('a')
#     return '123'
# print(foo1(foo2()))
#-----------------------------------------------------
# 形参实参
# 1.位置参数
# 实参和形参位置上一一对应 不可多值 或 少值
# def func1(x,y):
#     print(x,y)
# func1(1,2)

# 2. 关键词参数
# 形参实参指定变量名,以关键词辨认位置
# 注:1. 实参传入时可结合位置参数 和 关键词参数
#       但格式只能为(位置参数,关键词参数),二者位置不可对调
#     2.  实参不可对同一个值进行重复传值

# def func1(name,age):
#     print(name,age)
# func1('lin',age = 18)

# open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True):
# open('a.txt','w',encoding='utf-8')

# 3.默认形参
# 设置默认值的关键词参数,传值时可省略传入过程,以默认值替代

# def func1(name,age,sex = 'male'):
#     print(name,age,sex)
# func1('lin',age = 18)
# func1('lin',18,sex='female')

#4、可变长参数:
# 可变长指的是实参值的个数不固定,而实参有按位置和按关键字两种形式定义,
# 针对这两种形式的可变长,形参对应有两种解决方案来完整地存放它们,
# 分别是*args,**kwargs
#
# def foo(x,y,*args):
#     print(x,y)
#     print(args)
# foo(1,2,3,4,5)

# 在实参中带*:使其打散成位置实参进行赋值
# def foo(x,y,*args):
#     print(x,y)
#     print(args)
# foo(1,2,*[3,4,5]) #== foo(1,2,3,4,5,6)


# def foo(x,y,z):
#     print(x,y,z)
# foo(*[1,2,3])#== foo(1,2,3)
#
# def foo(x,y,**kwargs):
#     print(x,y)
#     print(kwargs)
# foo(1,y=2,a=1,b=2,c=3)

# 在实参中带**:使其打散成关键词实参进行赋值
# def foo(x,y,**kwargs):
#     print(x,y)
#     print(kwargs)
# foo(1,y=2,**{'a':1,'b':2,'c':3})
#
#
# def foo(x,y,**z):
#     print(x,y,z)
# foo(**{'z':1,'x':2,'y':3,'a':4})
#
#
# 将传给一个函数的参数 原封不动的传给另一个函数
# 注:需要遵循foo 函数的规则
# def foo(x,y):
#     print(x,y)
# def wrapper(*args,**kwargs):
#     print('====>')
#     foo(*args,**kwargs)
# # wrapper(1,4)
# wrapper(1,y=777)

#5、命名关键字参数:*后定义的参数,必须被传值(有默认值的除外),
# 且必须按照关键字实参的形式传递可以保证,传入的参数中一定包含某些关键字
# def foo(x,y,*args,a=1,b,**kwargs):
#     print(x,y)
#     print(args)
#     print(a)
#     print(b)
#     print(kwargs)
#
# foo(1,2,3,4,5,b=3,c=4,d=5)
# 结果:
#     1
#     2
#     (3, 4, 5)
#     1
#     3
#     {'c': 4, 'd': 5}

# --------------------------
# 函数当做另一个函数返回值返回

# def func2(a):
#      pass
#
# def func1(a):
#     print(a)
#     return a
# print(func1(func2(3)))
# ----------------------------
# 购物车功能优化选择
# def login():
#     print('login')
#
# def register():
#     print('register')
#
# def shopping():
#     print('shopping')
#
# def pay():
#     print('pay')
#
#
# def transfer():
#     print('transfer')
#
# func_dic={
#     '1':login,
#     '2':register,
#     '3':shopping,
#     '4':pay,
#     '5':transfer
# }
# # print(func_dic)
#
# msg="""
# 0 退出
# 1 登陆
# 2 注册
# 3 购物
# 4 支付
# 5 转账
# """
#
# while True:
#     print(msg)
#     choice=input('请输入您的操作: ').strip()
#     if choice == '0':break
#     if choice in func_dic:
#         func_dic[choice]()
#     else:
#         print('输入错误指令,请重新输入')
# ------------------------------------
# 函数嵌套定:1.函数嵌套使用,2.函数嵌套定义
#一:函数的嵌套调用:在调用一个函数过程中,其内部代码又调用了其他函数
# def bar():
#     print('from bar')
#
# def foo():
#     print('from foo')
#     bar()
#
# foo()

# def max2(x,y):
#     if x > y:
#         return x
#     else:
#         return y
#
# def max4(a,b,c,d):
#     res1=max2(a,b)
#     res2=max2(res1,c)
#     res3=max2(res2,d)
#     return res3
#
# print(max4(1,2,3,4))

#二:函数的嵌套定义:一个函数内部又定义了另外一个函数
# def outter():
#     x=1
#     print('from outter')
#     def inner():
#         print('from inner')
#     # print(x)
#     # print(inner)
#     inner()
#
# # outter()
# # inner
#
# outter()

# def f1():
#     print('from f1')
#     def f2():
#         print('from f2')
#         def f3():
#             print('from f3')
#         f3()
#     f2()
#
# f1()

# from math import pi
# # print(pi)
#
# def circle(radius,action=0):
#     """
#        圆形相关运算
#        :param radius: 半径
#        :param action: 0代表求面积,1代表求周长
#        :return: 面积或者周长
#        """
#
#     def area(radius):
#         return pi * (radius ** 2)
#
#     def perimiter(radius):
#         return 2 * pi * radius
#
#     if action == 0:
#         res=area(radius)
#     elif action == 1:
#         res=perimiter(radius)
#
#     return res
#
#
# print(circle(10,0))
# print(circle(10,1))






# --------
#名称空间:
# 存放名字的地方,三种名称空间,
# (之前遗留的问题x=1,1存放于内存中,
# 那名字x存放在哪里呢
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值