zoukankan      html  css  js  c++  java
  • *args **kwargs

    -----------耐得住寂寞,守得住芳华.

    # # -------------------------------[day10作业及默写]-------------------------------------#


    # 1,继续整理函数相关知识点,写博客。
    # 1. 动态传参
    # 形参:
    # 1. 位置参数
    # 2. 默认值参数
    # 3. 动态传参
    # 1 *args: 动态接收位置参数
    # 2 **kwargs:动态接收关键字参数
    # 顺序: 位置, *args, 默认值, **kwargs
    #
    # *, **:
    # def func(*args, **kwargs): 无敌传参
    # pass
    # *, ** 在形参位置: 聚合
    # 在实参位置: 打散
    # 实参:
    # 1. 位置参数
    # 2. 关键字参数
    # 3. 混合参数
    #
    # 2. 名称空间和作用域
    # 名称空间: 保存名字用的
    # 变量, 函数, 类
    #
    # 1. 内置名称空间:python自己, print, input, len
    # 2. 全局名称空间: 你写的代码从上到下
    # 3. 局部名称空间: 函数, 类, 方法, 其他模块, 对象
    #
    # 作用域
    # 全局作用域
    # 内置 + 全局
    # 局部作用域
    # 局部名称空间
    # 从局部找全局可以. 但是从全局找局部是不可以的
    #
    # globals() 查看全局作用域中的名字
    # locals() 查看当前作用域中的名字
    #
    # 3. 函数的嵌套(难点)
    # 每一层都会产生独自的名称空间
    # 4. nonlocal global
    # global: 在局部引入全局的内容, 可以升华一个变量为全局变量
    # nonlocal : 在局部, 引入上一层名称空间中的变量, 如果没有, 继续上一层......

    # # ---------------------------------------------------------------------------------#
    # 2,写函数,接收n个数字,求这些参数数字的和。(动态传参)

    #[方法一]
    # def func(*args):
    # sum = 0
    # for i in args:
    # sum += i
    # return sum
    # print(func(55,66))

    #[方法二]
    # def func(*args):
    #
    # return sum(args)
    #
    # print(func(55,66,11))

    # # ---------------------------------------------------------------------------------#
    # 3,读代码,回答:代码中,打印出来的值a,b,c分别是什么?为什么?
    # a = 10
    # b = 20
    #
    # def test5(a, b):
    # print(a, b)
    # c = test5(b, a)
    # print(c)

    # 20*10*(none)

    # # ---------------------------------------------------------------------------------#
    # 4,读代码,回答:代码中,打印出来的值a,b,c分别是什么?为什么?
    # a = 10
    # b = 20
    #
    # def test5(a, b):
    # a = 3
    # b = 5
    # print(a, b)
    #
    # c = test5(b, a)
    # print(c)
    # print(a, b)

    # 5*3*(none)*10*20

    # ---------------------------------------------------------------------------------#
    # 5,写函数,传入函数中多个实参(均为可迭代对象如字符串,列表,元祖,集合等),
    # 将每个实参的每个元素依次添加到函数的动态参数args里面.
    # 例如 传入函数两个参数[1,2,3] (22,33)最终args为(1,2,3,22,33)
    # def func(*args):
    # print(args)
    # s = func(*[1,2,3],*(22,33))
    # print(s)

    # # ---------------------------------------------------------------------------------#
    # 6,写函数,传入函数中多个实参(实参均为字典),将每个实参的键值对依次添加到函数的动态参数kwargs里面.
    # 例如 传入函数两个参数{‘name’:’alex’} {‘age’:1000}最终kwargs为{‘name’:’alex’ ,‘age’:1000}
    # 7, 下面代码成立么?如果不成立为什么报错?怎么解决?
    # 7.1
    # a = 2
    # def wrapper():
    # print(a)
    # wrapper()

    # 成立 ---> 2

    # # ---------------------------------------------------------------------------------#
    # 7.2
    # a = 2
    # def wrapper():
    # # a =2 # /*<--加入此行-->*/
    # a += 1
    # print(a)
    # wrapper()

    # 不成立 ,修改如上

    # ---------------------------------------------------------------------------------#
    # 7
    # def wrapper():
    # a = 1
    # def inner():
    # print(a)
    # inner()
    # wrapper()
    #成立 ---> 1

    # ---------------------------------------------------------------------------------#
    # 7.4
    # def wrapper():
    # a = 1
    # def inner():
    # # a =2 # /*<--加入此行-->*/
    # a += 1
    # print(a)
    # inner()
    # wrapper()
    #不成立 修改如上

    # # ---------------------------------------------------------------------------------#
    # 8,写函数,接收两个数字参数,将较小的数字返回.
    # def small(a,b):
    # c=b if a>b else a
    # print(c)
    # small(15,16)

    # # ---------------------------------------------------------------------------------#
    # 9,写函数,传入n个数,返回字典{‘max’:最大值,’min’:最小值}
    # 例如:min_max(2,5,7,8,4) 返回:{‘max’:8,’min’:2}
    # (此题用到max(),min()内置函数)
    # dic = {"max":[],"min":[]}
    # def max_min(lst):
    # for i in lst:
    # if i == max(lst):
    # dic["max"].append(i)
    # elif i == min(lst):
    # dic["min"].append(i)
    # return dic
    # lst=[1,8,9,520,5,2,3,4,0,-1314,6,6,5]
    # max_min(lst)
    # print(dic)

    # # ---------------------------------------------------------------------------------#
    # 10,写函数,传入一个参数n,返回n的阶乘
    # 例如:cal(7) 计算7*6*5*4*3*2*1
    # def factorial(n): # factorial-->阶乘
    # if n == 0:
    # print("结果为0")
    # else:
    # multi = 1 # multiplication -->乘法
    # for i in range(1,n+1):
    # multi = multi*i
    # print(multi)
    # factorial(10)

    # 1的阶乘:1
    # 2的阶乘:2
    # 3的阶乘:6
    # 4的阶乘:24
    # 5的阶乘:120
    # 6的阶乘:720
    # 7的阶乘:5040
    # 8的阶乘:40320
    # 9的阶乘:362880
    # 10的阶乘:3628800
    # # ---------------------------------------------------------------------------------#
    # 11写函数,返回一个扑克牌列表,里面有52项,每一项是一个元组
    # 例如:[(‘红心’,2),(‘草花’,2), …(‘黑桃’,‘A’)]
    # def puker():
    # lis = []
    # lst_color = ["黑桃", "红桃", "梅花", "方块"]
    # lst = ["A","2","3","4","5","6","7","8","9","10","J","Q","K"]
    # for i in lst_color:
    # for j in lst:
    # lis.append((i,j))
    # print(lis)
    # puker()

    # # ---------------------------------------------------------------------------------#
    # # 12 有如下函数:
    # def wrapper():
    # def inner():
    # print(666)
    # wrapper()
    #
    # # [方法一]
    # def wrapper():
    # def inner():
    # print(666)
    # inner()
    # wrapper()
    #
    # # [方法二]
    # def wrapper():
    # def inner():
    # print(666)
    # return inner
    # wrapper()()


    # 你可以任意添加代码,用两种或以上的方法,执行inner函数.
    #
    # # ---------------------------------------------------------------------------------#
    # 明日默写:
    # 1,形参的接收顺序。
    # 2,什么是命名空间,什么是全局名称空间,什么是局部名称空间,什么是内置名称空间。
    # 3,什么是全局作用域,什么是局部作用域。
    # 4,名称空间的加载顺序,取值顺序。
    # 5,解释一下什么是global,什么是nonlocal。
  • 相关阅读:
    [转]ATOM 规范 中文版
    Silverlight 点滴(一) 获取定义在Generic.xaml或其他*.xaml中的对象
    [转]将WinCE5.0模拟器(emulator)连接到VS2005
    div+css布局实例淘宝分析(三)(2)
    介绍几款所见即所得的WEB在线编辑器
    cFos V7.52 简体中文破解版
    div+css布局实例淘宝分析(三)(1)
    div+css布局实例淘宝分析(一)
    中国水网开通了
    div+css布局实例淘宝分析(三)(3)
  • 原文地址:https://www.cnblogs.com/dealdwong2018/p/9880165.html
Copyright © 2011-2022 走看看