python基础 Day10
python Day10
函数的参数升级版
形参角度
万能参数*arg
#在函数定义时,*代表聚合。他将所有的位置参数聚合成一个元组,赋值给了args
def test(*args):
print("我喜欢吃:%s,%s,%s"%(args))
test("熊掌","鸡爪","牛鞭")
写一个函数,计算你传输函数的所有数字的和
#写一个函数,计算你传输函数的所有数字的和
def countnumber(*args):
count=0
for i in args:
if type(i)==int:
count+=1
return count
print(countnumber(2,"Dsf","sfdf"))
万能参数**kwargs,接受关键字参数。
#函数定义时**将所有的关键字参数聚合到一个字典中,将这个字典赋值到**kwargs
def countnumber(**kwargs):
print(kwargs)
countnumber(name="zhuxiayu",age="23")
##结果:{'name': 'zhuxiayu', 'age': '23'}
实参角度的参数位置(位置参数、*args、默认参数、仅限关键词参数、**kwargs)
#如果要是args获得实参其必须在位置参数之后,关键参数之前,kwargs在最后
def countnumber(a,b,*args,sex="男",**kwargs):
print(a,b)
print(sex)
print(args)
print(kwargs)
countnumber(1,2,3,4,5,name="范德萨发送")
将[1,2]和[1,2,3]传入函数中,结果得到(1,2,1,2,3)
def list_dis(*args):
list1 = []
for list in args:
for i in list:
list1.append(i)
print(tuple(list1))
list_dis([1,2],[1,2,4])
###升级版本 其中的*代表打散,**也是代表打散
def list_dis(*args):
print(args)
list_dis(*[1,2],*[1,2,4])
#####################
def list_dis(**kargs):
print(kargs)
list_dis(**{"name":"zhxuiayu"},**{"age":18})
##结果:{'name': 'zhxuiayu', 'age': 18}
python的空间
内置名称空间:python源码给你提供的一些内置的函数,print input(builtins.py)文件
全局名称空间(当前py文件)
局部名称空间(函数,当函数执行时候才开辟)
空间的加载顺序:内置名称空间>全局名称空间>局部名称空间(函数执行的时候)
取值顺序:就近原则
name="zhuxiayu"
def test():
name="xhuaiyu2"
print(name)
test()
###结果 xhuaiyu2
(从局部找时)局部名称空间------>全局名称空间----->内置名称空间
作用域:(局部作用域可以引用到全局的变量)
全局作用域:内置名称空间 全局名称空间
局部作用域:局部名称空间(局部作用域不能改变全局作用域的变量,当python解释器读取到局部作用域时,发现了你对一个变量进行修改的操作了,解释会认为你在局部
已经定义过这样的变量了。便会从局部找所有会报错,但是局部作用域可以使用全局作用域的值)
高阶函数
def func2():
print(2)
def func3():
print(6)
print(4)
func3()
print(8)
print(3)
func2()
print(5)
###结果:3 2 4 6 8 5
内置函数
globals()、locals()
def func():
name="alex"
age=73
print(globals())#返回的是字典,字典里面的键值对:全局作用域里面的所有内容
print(locals())#返回的是字典,字典里面的键值对:当前作用域里面的所有内容
func()
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x000001C16C14F808>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'C:/Users/zhuxiayu/PycharmProjects/untitled/remake.py', '__cached__': None, 'func': <function func at 0x000001C16C2041F8>}
{'name': 'alex', 'age': 73}
作业
如果执行{"发生的","发生"},[1,2]则fun中args和kwargs分别是什么
def fun(*args,**kwargs):
print(args)
print(kwargs)
fun({"发生的","发生"},[1,2])
###结果 ({'发生的', '发生'}, [1, 2])
## {}如果执行{"发生的","发生"},[1,2],**{"札":"发"}则fun中args和kwargs分别是什么
def fun(*args,**kwargs):
print(args)
print(kwargs)
fun({"发生的","发生"},[1,2],**{"札":"发"})
##结果 ({'发生的', '发生'}, [1, 2])
## {'札': '发'}看代码写结果
def func():
v1="服务器1"
def inner():
print(v1)
v1="服务器2"
inner()
func()
v1="服务器3"
func()
##结果 服务器2
## 服务器2
##解析:就近原则,在本地局部寻找变量在到父级局部寻找在全局在找内置
python基础 Day10的更多相关文章
- python之最强王者(2)——python基础语法
背景介绍:由于本人一直做java开发,也是从txt开始写hello,world,使用javac命令编译,一直到使用myeclipse,其中的道理和辛酸都懂(请容许我擦干眼角的泪水),所以对于pytho ...
- Python开发【第二篇】:Python基础知识
Python基础知识 一.初识基本数据类型 类型: int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位 ...
- Python小白的发展之路之Python基础(一)
Python基础部分1: 1.Python简介 2.Python 2 or 3,两者的主要区别 3.Python解释器 4.安装Python 5.第一个Python程序 Hello World 6.P ...
- Python之路3【第一篇】Python基础
本节内容 Python简介 Python安装 第一个Python程序 编程语言的分类 Python简介 1.Python的由来 python的创始人为吉多·范罗苏姆(Guido van Rossum) ...
- 进击的Python【第三章】:Python基础(三)
Python基础(三) 本章内容 集合的概念与操作 文件的操作 函数的特点与用法 参数与局部变量 return返回值的概念 递归的基本含义 函数式编程介绍 高阶函数的概念 一.集合的概念与操作 集合( ...
- 进击的Python【第二章】:Python基础(二)
Python基础(二) 本章内容 数据类型 数据运算 列表与元组的基本操作 字典的基本操作 字符编码与转码 模块初探 练习:购物车程序 一.数据类型 Python有五个标准的数据类型: Numbers ...
- Python之路【第一篇】python基础
一.python开发 1.开发: 1)高级语言:python .Java .PHP. C# Go ruby c++ ===>字节码 2)低级语言:c .汇编 2.语言之间的对比: 1)py ...
- python基础之day1
Python 简介 Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言. Python为我们提供了非常完善的基础代码库,覆盖了 ...
- python基础之文件读写
python基础之文件读写 本节内容 os模块中文件以及目录的一些方法 文件的操作 目录的操作 1.os模块中文件以及目录的一些方法 python操作文件以及目录可以使用os模块的一些方法如下: 得到 ...
随机推荐
- spring学习(八)事务操作
一.事务的概念: 事务是并发控制的单位,一系列操作组成的工作单元,该工作单元内的操作是不可分割的,也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做,所有操作必须成功完成,否则 ...
- 想理解JVM看了这篇文章,就知道了!
前言 本章节属于Java进阶系列,前面关于设计模式讲解完了,有兴趣的童鞋可以翻看之前的博文,后面会讲解JVM的优化,整个系列会完整的讲解整个java体系与生态相关的中间件知识.本次将对jvm有更深 ...
- Android多线程--AsyncTask
常见的多线程方法有: 继承Thread类 实现Runnable接口 Handler AsyncTask HandlerThread 1.定义 一个Android已经封装好的轻量级异步类 属于抽象类,即 ...
- Bug--Tomcat Error start child
添加Quartz之后报错 下面的Cause by: More than one fragment with the name [spring_web] was found. This is not l ...
- js:事件(注册、解绑、DOM事件流、事件对象、事件委托)
1.注册事件 (1)传统方式注册事件 <body> <button id="b1">请点击</button> <script> va ...
- Window版本的Python安装库大全
1. 位置 python的pip安装包网站 https://www.lfd.uci.edu/~gohlke/pythonlibs/ 下载方法 wget https://download.lfd.uci ...
- Get与Post的区别?(面试官最想听到的答案)
GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二. 最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数. 你可能自己 ...
- CF1037H Security 线段树合并 SAM
LINK:Security 求一个严格大于T的字符串 是原字符串S[L,R]的子串. 容易想到尽可能和T相同 然后再补一个尽可能小的字符即可. 出于这种思想 可以在SAM上先跑匹配 然后枚举加哪个字符 ...
- luogu P1526 [NOI2003]智破连环阵 搜索+最大匹配+剪枝
LINK:智破连环阵 考试的时候 题意没理解清楚 题目是指一个炸弹爆炸时间结束后再放另一个炸弹 而放完一个炸弹紧接另一个炸弹.题目中存在然后二字. 这样我们可以发现某个炸弹只会炸连续的一段. 但是 由 ...
- .Net小白的第一篇博文
说起来也比较惭愧,5个月之前,我早已创建了博客园账号,那时候的我雄心壮志,给自己定下了 很多目标.现在回想起来,除了体重的增长,头发的稀疏,似乎这段时间的消逝并没有带给我什么见识上的成长.哈哈,想必大 ...