zoukankan      html  css  js  c++  java
  • 初识函数

    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()
      
  • 相关阅读:
    基于.Net Core的Redis:实现查询附近的地理信息
    基于.Net Core的Redis:基本数据类型及其应用场景与命令行操作
    C# WebClient几种常用方法的用法
    const学习(续)
    C++ const学习
    Unicode
    android studio下使用HAXM android模拟器(x86)加速器
    使用efinance包获取股票数据
    Linux初识
    UWSGI
  • 原文地址:https://www.cnblogs.com/richard_A/p/11743327.html
Copyright © 2011-2022 走看看