• 初识函数


    1.参数

    1. 函数名加括号是函数的调用,只有print(函数名())才会打印出来函数的返回值.例如:print(func())

    2. 函数的返回值只有print才能呈现出来,而不是函数的调用

    3. 动态参数在函数定义阶段是聚合,函数体中是打散

    4. 动态传参的时候,参数的传递顺序:位置参数,动态位置参数(*args),关键字参数,动态关键字参数(**kwargs)

    5. 动态位置参数的返回值是元组,动态关键字参数的返回值是字典

      def func(a,*args,d='不会',**kwargs):
          print(a,args,d,kwargs)
      
      func('大','作','业',d='一点写不出来','我'='还写吗?','你'='写完讲讲')
      
      dic = {'k1':'v1','k2':'v2'}
      def func(**kwargs):
          print(kwargs)	# 字典本身
          print(*kwargs)	# 键
          # print(**kwargs)	# 报错 : k1是此函数的无效关键字参数
      
      func(**dic)	# **dic:把字典打散成一个个的键值对.比如:'k1'='v1','k2'='v2'进行传参
      
      a = 1
      def func():
          a += 1     # 报错,局部变量不能修改全局变量
          print(a)
      func()
      # 如果把a+=1删掉,是可以print出来的:找a:局部没有,就会去全局找
      #               如果函数是嵌套的,内层没有,去外层找,外层没有就去全局找...
      # 如果上面这个改成下面这个,就会没问题,
      # 局部变量不能修改全局变量,但是列表是可变数据类型,
      # 虽然列表内的元素会改变,但是lst的地址没变
      # 上面这个想要运行:a+=1的上面加上:global a
      lst=[1,23]
      def wrapper():
          lst[0]=2
          print(lst)
          print(globals()) # 全局作用域:{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x00000269941AC320>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'D:/args.py', '__cached__': None, 'lst': [2, 23], 'wrapper': <function wrapper at 0x0000026994281D90>}
      {}
          print(locals()) # 局部作用域:{}
      
      wrapper()
      
  • 相关阅读:
    2017"百度之星"程序设计大赛
    2018省赛赛第一次训练题解和ac代码
    2018天梯赛第一次训练题解和ac代码
    rsa Round #71 (Div. 2 only)
    AtCoder Grand Contest 021
    Hello 2018
    Educational Codeforces Round 36 (Rated for Div. 2)
    Codeforces Round #462 (Div. 2)
    Codeforces Round #467 (Div. 2)
    [Offer收割]编程练习赛48
  • 原文地址:https://www.cnblogs.com/richard_A/p/11743327.html
Copyright © 2020-2023  润新知