10 函数进阶  知识点汇总
一.动态参数 形参的第三种
1.动态接收位置传参 表达:*args (在参数位置编写 * 表⽰接收任意内容)
(1)动态位置参数
def eat(*args):
print(args)
eat("水果","蔬菜","肉",)
# # 结果以元祖的形式呈现. : ('水果', '蔬菜', '肉')
(2) 位置参数,动态位置参数: 动态参数必须在位置参数后⾯
def eat(a,b,*args):
print(a,b,args)
eat("水果","蔬菜","鸡","鸭","鱼")
# # 结果 : 水果 蔬菜 ('鸡', '鸭', '鱼')
(3) 如果 "*args" ,位置参数,则后面的位置参数必须用关键字参数传值.
def eat(*args,a,b,):
print(args,a,b,)
eat("苹果","香蕉","梨","芒果",a="荔枝",b="樱桃")
# 结果 : ('苹果', '香蕉', '梨', '芒果') 荔枝 樱桃
(4).如果有默认值参数,则默认值参数必须写在动态参数之后才能生效.
def eat(a,b,*args,c=66):
print(a,b,args,c)
eat(1,2,3,4,5,6,7,8,)
# 结果: 1 2 (3, 4, 5, 6, 7, 8) 66
# 动态参数的顺序: 位置参数, 动态参数*, 默认值参数
2.动态接收关键字参数 表达:(**kwargs)
def fun(**kwargs):
print(kwargs)
fun(a=11,b=22,c=33)
# 结果以字典的形式呈现 ; {'a': 11, 'b': 22, 'c': 33}
# 动态接收关键字参数也要在后⾯
# 混合
def eat(a,b,*args,c=11,**kwargs):
print(a,b,args,c,kwargs)
eat("苹果","香蕉","橘子","荔枝","芒果","西瓜",d="火龙果")
# 动态参数的顺序:位置参数 ,动态接收位置参数 ,默认值参数,.动态接收关键字参数.
3.无敌传参: def fun(*args,**kwargs) 先位置后关键字
def fun(*args,**kwargs):
print(args,kwargs)
fun(1,2,3,4,a=33,b=44,c=55)
# 结果 (1, 2, 3, 4) {'a': 33, 'b': 44, 'c': 55}
4."动态参数的另一种传参方式
列表 (list)
def fun(*args):
print(args)
lst = [1, 4, 7]
fun(lst[0], lst[1], lst[2]) #或者下面的方式
fun(*lst) # 可以使⽤*把⼀个列表按顺序打散
字符串
s = "⾂妾做不到"
fun(*s)
字典 (dict)
def fun(**kwargs):
print(kwargs)
dic = {'a':1, 'b':2}
fun(**dic)
5.函数的注释
二.命名空间 : 我们给存放名字和值的关系的空间起⼀个名字叫: 命名空间
1.命名空间分类:
# (1).全局命名空间--> 我们直接在py⽂件中, 函数外声明的变量都属于全局命名空间
# (2) 局部命名空间--> 在函数中声明的变量会放在局部命名空间
# (3) 内置命名空间--> 存放python解释器为我们提供的名字, list, tuple, str, int这些都是内置命名空间.
2.命名空间的加载顺序
# (1)内置命名空间;
# (2)全局命名空间:
# (3)局部命名空间 (函数被执行的时候)
3.命名空间的取值顺序;
# (1)局部命名空间
# (2)全局命名空间
# (3)内置命名空间
三.作用域: 作⽤域就是作⽤范围, 按照⽣效范围来看分为 全局作⽤ 域 局部作⽤域
1.全局作⽤域: 包含内置命名空间和全局命名空间. 在整个⽂件的任何位置都可以使⽤(遵循从上到下逐⾏执⾏)
2.局部作⽤域: 在函数内部可以使⽤.
3.globals()函数来查看全局作⽤域中的内容, locals()来查看局部作⽤域中的变量和函数信息
a = 10
def func():
a = 40
b = 20
def abc():
print("哈哈")
print(a, b) # 这⾥使⽤的是局部作⽤域
# print(globals()) # 打印全局作⽤域中的内容
# print(locals()) # 打印局部作⽤域中的内容
func()
四.函数的嵌套
1. 只要遇⻅了()就是函数的调⽤. 如果没有()就不是函数的调⽤
2. 函数的执⾏顺序
def fun1():
print(111)
def fun2():
print(222)
fun1()
fun2()
print(111)
# 结果:222,111,111
# 函数的嵌套
def fun2():
print(222)
def fun3():
print(666)
print(444)
fun3()
print(888)
print(33)
fun2()
print(555)
# 结果: 33,222,444,666,888,555
四.global and nonlocal
1.global表⽰. 不再使⽤局部作⽤域中的内容了. ⽽改⽤全局作⽤域中的变量
a = 100
def func():
global a # 加了个global表示不再局部创建这个变量了. ⽽是直接使⽤全局的a
a=28
print(a)
func()
print(a)
# 对于可变数据类型可以直接进⾏访问. 但是不能改地址. 说⽩了. 不能赋值
lst = ["麻花藤", "刘嘉玲", "詹姆斯"]
def func():
lst.append("⻢云云") # 对于可变数据类型可以直接进⾏访问. 但是不能改地址. 说⽩了. 不能赋值
print(lst)
func()
print(lst)
2.nonlocal 表⽰在局部作⽤域中, 调⽤⽗级命名空间中的变量.
a = 10
def func1():
a = 20
def func2():
nonlocal a
a = 30
print(a)
func2()
print(a)
func1()
# j结果: 加了nonlocal 30 30
# 不加nonlocal 30 20
# 多层嵌套
a = 1
def fun_1():
a = 2
def fun_2():
nonlocal a
a = 3
def fun_3():
a = 4
print(a)
print(a)
fun_3()
print(a)
print(a)
fun_2()
print(a)
print(a)
fun_1()
print(a)
课后作业
9,写函数,接收一个参数(此参数类型必须是可迭代对象),将可迭代对象的每个元素以’_’相连接,形成新的字符串,并返回.
例如 传入的可迭代对象为[1,'老男孩','武sir']返回的结果为’1_老男孩_武sir’
def func9(lst):
lst1=[]
for el in lst:
lst1.append(str(el))
return "_".join(lst1) print(func9([1,'老男孩','武sir']))
10 写函数,传入n个数,返回字典{‘max’:最大值,’min’:最小值}
例如:min_max(2,5,7,8,4) 返回:{‘max’:8,’min’:2}(此题用到max(),min()内置函数)
def func10(*args):
the_max=args[0]
the_min=args[0]
for i in args:
if i < the_min:
the_min=i
elif i > the_max:
the_max=i
return {"max":the_max,"min":the_min}
print(func10(2,5,7,8,4))
方法二
def func10(*args):
dic={'max':max(*args),"min":min(*args)}
return dic
print(func10(2,5,7,8,4))
11 写函数,传入一个参数n,返回n的阶乘
例如:cal(7) 计算7*6*5*4*3*2*1
def cal(n):
sum=1
for i in range(n,0,-1):
sum=sum*i
return sum
print(cal(7))
12写函数,返回一个扑克牌列表,里面有52项,每一项是一个元组
例如:[(‘红心’,2),(‘草花’,2), …(‘黑桃’,‘A’)]
def func():
lst=[]
li1=["红心","草花","黑桃","方片"]
li2 = [2, 3, 4, 5, 6, 7, 8, 9, 10, "J", "Q", "K", "A"]
for i in li1: for el in li2: lst.append(tuple([i,el]))
print(lst)
func()
13 # 写代码完成99乘法表.
for x in range(1,10):
for y in range(1,x+1):
r=x*y
print("%s * %s= %s " % (x,y,r)," ",end="")
print(end="\n")
												

python全栈开发 * 10知识点汇总 * 180612的更多相关文章

  1. python全栈开发 * 32知识点汇总 * 180717

    32 网络编程 (一)一.架构 定义:程序员开发的一种模式. 分类: C/S 架构 C/S即:Client与Server , 客户端/ 服务器模式 . 缺点 : 冗余 B/S 架构 Browser与S ...

  2. python全栈开发 * 26知识点汇总 * 180709

    26 logging collections random 模块 一.logging低配:日志不能写入文件与显示同时进行 import logging logging.basicConfig(leve ...

  3. python全栈开发 * 01知识点汇总 * 180530

    一 python简介. 1.创始人:  吉多 .范罗苏姆  \   (Guido van Rossum). 2.时间  :  1989年. 3.主要应用领域  :  云计算 \  WEB开发  \   ...

  4. python全栈开发 * 24 知识点汇总 * 180705

    24 模块-------序列化一.什么是模块 模块:py文件就是一个模块.二.模块的分类:(1)内置模块 (登录模块,时间模块,sys模块,os模块)(2)扩展模块 (itchat 微信有关,爬虫,b ...

  5. python全栈开发 * 27知识点汇总 * 180710

    27   time  os  sys  模块 time 模块 一.表示时间的三种方式 时间戳(timestamp), 元组(struct_time),格式化时间字符串(Format string) 小 ...

  6. python全栈开发 * 14 知识点汇总 * 180530

    14 生成器表达式 内置函数# 一.迭代器 (补充)# 1.如何判断迭代对象,迭代器# (1).dir(obj)检测对象有没有iter方法,然后it=obj.__iter__() 获取迭代器 , it ...

  7. python全栈开发 * 12 知识点汇总 * 180530

    12 知识点总结 装饰器进阶 ⼀. 通⽤装饰器的回顾1.开闭原则: 对增加功能开放. 对修改代码封闭2.装饰器的作⽤: 在不改变原有代码的基础上给⼀个函数增加功能3.通⽤装饰器的写法:def wrap ...

  8. python全栈开发* 02 知识点汇总 * 180531

    运算符和编码 一  格式化输出 1  .输入  name ,age , job , hobby. 输出  :   ---------------  info of Mary  ------------ ...

  9. python全栈开发 * 36知识点汇总 * 180721

    36 操作系统的发展史 进程一.手工操作--穿孔卡片 1.内容: 程序员将对应于程序和数据的已穿孔的纸带(或卡片)装入输入机,然后启动输入机把程序和数据输入计算机内存,接着通过控制 台开关启动程序针对 ...

随机推荐

  1. 【Storm】Storm实战之频繁二项集挖掘(附源码)

    一.前言 针对大叔据实时处理的入门,除了使用WordCount示例之外,还需要相对更深入点的示例来理解Storm,因此,本篇博文利用Storm实现了频繁项集挖掘的案例,以方便更好的入门Storm. 二 ...

  2. 用交叉验证改善模型的预测表现-着重k重交叉验证

    机器学习技术在应用之前使用“训练+检验”的模式(通常被称作”交叉验证“). 预测模型为何无法保持稳定? 让我们通过以下几幅图来理解这个问题: 此处我们试图找到尺寸(size)和价格(price)的关系 ...

  3. 阿里云 CentOS7 安装 Nginx 后,无法访问的问题

    在阿里云实例中,选择 网络与安全中的安全组.修改安全组规则. 例如:   但是还是不行 需要这样排查 netstat -anp | grep 80 iptables -L -n   firewall- ...

  4. Linux内核剖析(二)Linux内核绪论

    什么是内核 内核是操作系统最基本的部分.它是为众多应用程序提供对计算机硬件的安全访问的一部分软件,这种访问是有限的,并且内核决定一个程序在什么时候对某部分硬件操作多长时间.内核的分类可分为单内核和双内 ...

  5. 浅谈 CSS 预处理器: 为什么要使用预处理器?

    CSS 自诞生以来,基本语法和核心机制一直没有本质上的变化,它的发展几乎全是表现力层面上的提升.最开始 CSS 在网页中的作用只是辅助性的装饰,轻便易学是最大的需求:然而如今网站的复杂度已经不可同日而 ...

  6. Implementation of Message Receiver

  7. 突破拐点:企业成长的S曲线

    1.企业成长的不同时期 初创期:初创前几年,最重要的创业激情,靠“蓝色小药丸”,断层期切入,不断试错玩命干(产品定位.商业模式.融资源.找关系.辅渠道),并最终完成赢利模式,得以生存. 成长期:通过快 ...

  8. Java8新特性interface中的static方法和default方法

    static方法 java8中为接口新增了一项功能:定义一个或者更多个静态方法.用法和普通的static方法一样. 代码示例 public interface InterfaceA { /** * 静 ...

  9. 基于jQuery 3D旋转明星人物展示特效

    分享一款基于jQuery 3D旋转明星人物展示特效.这是一款来自百度换肤活动的明星旋转展示效果.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div class=&quo ...

  10. 【nodejs】初识 NodeJS(一)

    构建一个基础的 http 服务器 需要引用 http 模块,http 模块是 node.js 的内置模块. var http = require('http'); http.createServer( ...