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

# # -------------------------------[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。

*args **kwargs的更多相关文章

  1. python *args **kwargs

    简单来说,当你传入的参数不能确定是几个的时候会用到 *args和**kwargs,这里星号后边只是个代号,你写成a也可以. 而这两者的区别是 如果是键值对就要用后者,反之前者就可以. 同时还可以用(a ...

  2. 理解理解python中的'*','*args','**','**kwargs'

    http://blog.csdn.net/callinglove/article/details/45483097 讲了一大堆, 我也是用来理解类继承当中的参数行为的. =============== ...

  3. 搞懂function(*args,**kwargs)

    给出一个例子: def foo(*args,**kwargs): print 'args=',args print 'kwargs=',kwargs print '------------------ ...

  4. python 中参数*args, **kwargs

    def func(*args, **kwargs): print 'args : ', args print 'kwargs :', kwargs def test(): func(1,2,'x',' ...

  5. 理解Python的*args, **kwargs

    1 # coding=utf-8 2 def speak(*args, **kwargs): 3 print args, kwargs 4 5 6 a = 1 7 b = 2 8 c = 3 9 sp ...

  6. python之动态参数 *args,**kwargs和命名空间

    一.函数的动态参数 *args,**kwargs, 形参的顺序1.你的函数,为了拓展,对于传入的实参数量应该是不固定,所以就需要用到万能参数,动态参数,*args, **kwargs 1,*args ...

  7. day10 参数args kwargs 作用域

    函数参数/作用域/args/kwargs 1.参数 1.1参数基本知识 任意个数 任意类型 func("1",True) 1.2位置传参(调用函数并传入参数) def func(a ...

  8. Python:a,*args,**kwargs的理解

    1.何时用这些参数? 在任何时候继承类和重写方法时,应当用到’*args’和’**kwargs’将接收到的位置参数和键值参数给父类方法 . 2.一句话清晰说明: a是常规的变量类型,比如int,str ...

  9. python args kwargs 传递参数的区别

    先来看个例子: def foo(*args, **kwargs): print 'args = ', args print 'kwargs = ', kwargs print '----------- ...

随机推荐

  1. BM:EOS的创造者

    2018年6月EOS的主网即将上线,EOS到底是全球骗局,还是技术创? EOS币到底能涨到几何,现在还适合不适合入手...我们暂且不说.先了解一下EOS的创造者BM,以及BM的传奇经历. BM BM是 ...

  2. MongoDB数据库简单操作

    之前学过的有mysql数据库,现在我们学习一种非关系型数据库 一.简介 MongoDB是一款强大.灵活.且易于扩展的通用型数据库 MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数 ...

  3. 持续代码质量管理-SonarQube-7.3部署

    Sonar 是一个用于代码质量管理的开放平台.通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具.与持续集成工具(例如 Hudson/Jenkins 等)不同,Sonar ...

  4. 基于centOS7:新手篇→tomcat安装配置

    1.新环境,还没有安装lrzsz和unzip,先安装 yum -y install lrzsz yum -y install unzip 2.进入tomcat官网下载安装包,使用rz上传到服务器opt ...

  5. 【算法】LeetCode算法题-Search Insert Position

    这是悦乐书的第152次更新,第154篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第11题(顺位题号是35).给定排序数组和目标值,如果找到目标,则返回索引. 如果没有, ...

  6. mysql统计一年12月的数据

    效果图: select end) as 一月份, end) as 二月份, end) as 三月份, end) as 四月份, end) as 五月份, end) as 六月份, end) as 七月 ...

  7. jquery.qrcode.js 生成二维码并支持中文的方法

    GitHub地址: https://github.com/jeromeetienne/jquery-qrcode <div class="QR"></div> ...

  8. 【Beta】博客合集

    [Beta Scrum]冲刺! 1/5 [Beta Scrum]冲刺! 2/5 [Beta Scrum]冲刺! 3/5 [Beta Scrum]冲刺! 4/5 [Beta Scrum]冲刺! 5/5

  9. 【Teradata 】TD最大列数

    1.一个表最大列数限制是多少? DB2,表最大列数1012,视图最大列数5000:一行最大长度32677Byte Teradata 表最大列数和视图最大列数2048,:16版本前,一行最大长度为64k ...

  10. 前端使用node.js+express+mockjs+mysql实现简单服务端,2种方式模拟数据返回

    今天,我教大家来搭建一个简单服务端 参考文章: https://www.jianshu.com/p/cb89d9ac635e https://www.cnblogs.com/jj-notes/p/66 ...