day03-函数
形参:位置参数:必须传
*args:动态参数,可以接收任意多个位置参数
默认值参数:可以传也可以不传
**kwargs:动态参数,可以接收多个关键字参数。
实参:按照位置传参,按照关键字传参。 #顺序:位置参数,*args,默认值参数,**kwargs。
def test(a,*args,t=10,**kwargs): #t=10是默认值参数,要放在**kwargs前面。
print(args,kwargs,t)
test(1,23,3,12,45,3,1,5,1,3,5,1,3,t=200,a='asdf',b='awea') #t=200是关键字传参。 def test1(*args): #args是元组。
print(args)
a = (1,2,3,87,45,3,43,645)
test1(*a) #将元祖a打散成多个元素传参。 def test3(*args):
print(*args) #args是元组,*args是打散元组,所以执行结果是1 2 3
print(args) #结果是(1,2,3)
test3(1,2,3) def test2(**kwargs): #形参**kwargs将传入的参数放在字典里面。kwargs是字典。
print(kwargs)
b = {'c':1,'t':23}
# test2(**b) #实参**b将字典打散为键值对传给形参。跟下行代码test2(c=5,t=10)的效果一样。
test2(c=1,t=23) def a():
return 2
print(a()) #函数名()=返回值。 a()=2 def b(*args):
return args
print(b(1,2,3)) 默认值参数的陷阱
def test(a=[]):
a.append(1)
print(a)
test() #因为a是默认值参数,所以调用函数的时候可以不传参,执行结果是[1]
test() #[1,1]
test() #[1,1,1] 返回值
没有返回值:返回None
1.不写return
2.只写return :结束函数,return下面的代码不执行。
3.写return None 不常用
返回一个值:
可以返回任何数据类型:数字,字符串,元组,列表,字典等等。
如果有多个return,只执行第一个。
返回多个值:
多个返回值要用多个变量接收。
def test():
return 1,2,3
a1,a2,a3=test() #多个返回值要用多个变量接收。
print(a1,a2,a3) #打印出1 2 3
print(test()) #打印出元组(1,2,3) def a(b):
return b[1::2] #返回奇数索引对应的值
print(a([1,3,3,6,1,4])) def a(b):
return len(b)<5 #返回传入的字符串的长度是否小于5
print(a('adsfadsf')) def test(n):
if len(n)>2: #检查传入的列表的长度是否大于2,如果是,返回前面两个元素。
return n[:2]
print(test([1,2,3,4])) def test(list):
'''函数注释:统计传入的参数有多少个字母(字母包含汉字),数字,空白符,其他字符'''
alpha = 0
digit = 0
space = 0
other = 0
for i in list:
if i.isalpha(): #如果i是字母为True
alpha += 1
elif i.isdigit(): #数字
digit += 1
elif i.isspace(): #空白符
space += 1
else: #其他
other += 1
return alpha,digit,space,other
print(test('asdfasdfas asdgasdg asdfasdawe645a4s4df 646 465a4 64 646 46 46 465****、、、 ')) def test(n):
dic={'alpha':0,'digit':0,'space':0,'other':0} #利用字典简化代码,并且返回字典,让别人易读。只看结果就知道字母,数字,空白符,其他,一共多少个。
for i in n:
if i.isalpha():
dic['alpha'] += 1
elif i.isdigit():
dic['digit'] += 1
elif i.isspace():
dic['space'] += 1
else:
dic['other'] += 1
return dic
print(test('asdfa 44 6a4 645 6a6dfa687df6a**a*d*f*a*d*f*')) def test(dic):
for k in dic:
if len(dic[k]) > 2:
dic[k] = dic[k][:2]
return dic
print(test({'adf':'dfa','vb':'cdag','oe':'desfg'})) def test(a,b): #接收两个数字,返回小的
return a if a<b else b #三元运算,简化代码,适合简单的情况
print(test(1,5)) a = 0 #全局变量
def outer():
b=2 #局部变量
def inner(): #嵌套函数
nonlocal b #nonlocal 声明b是外层函数的变量
b=20000000 #修改b的值
inner()
print(b)
global a #声明a是全局变量。如果想修改全局变量,必须先声明
a=10000000 #修改a的值
outer()
print(a) 闭包:闭包的好处是外部函数变量a长期存放在内存当中,不会因为外部函数多次被调用而多次生成,导致占用空间。
def outer():
a=1
def inner():
print(a) #内部函数调用外部的变量,叫做闭包。这里调用了a.
return inner #inner()是调用inner函数,inner没有()是函数对象的意思。这里返回函数对象的地址给outer()。因为函数名()=返回值,所以outer()=inner.
outer()() #因为outer()=inner,所以outer()()=inner(),这样就可以调用内部函数。
day03-函数的更多相关文章
- day03 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数
本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数 温故知新 1. 集合 主要作用: 去重 关系测 ...
- 基础学习day03---程序结构与控制、函数与数组入门
一.程序结构 1.顺序结构 2.选择结构 3.循环结构 二.顺序结构 程序至上而下逐行执行,一条语句执行完之后继续执行下一条语句,一直到程序的末尾 三.条件选择结构 选择结构是根据条件的成立与否, ...
- python学习大纲目录(转自alex博客https://www.cnblogs.com/alex3714/)
day01: 介绍.基本语法.流程控制 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc是个什么鬼? 数据类型初识 数据运算 ...
- python开发学习-day03(set集合、collection系列 、深浅拷贝、函数)
s12-20160116-day03 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: ...
- python之路:Day03 --- Python基础3 >>函数
本节内容 1.函数基本语法及特性 2.参数 3.局部变量与全局变量 4.返回值 嵌套函数 5.递归 6.匿名函数 7.高阶函数 8.内置函数 一.函数基本语法及特性 区别 面向过程编程:根据业务逻辑从 ...
- Day03 - Python 函数
1. 函数简介 函数是组织好的,可重复使用的,用来实现单一或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.Python提供了许多内建函数,比如print():也可以自己创建函数,这 ...
- 超全面的JavaWeb笔记day03<JS对象&函数>
1.js的String对象(****) 2.js的Array对象 (****) 3.js的Date对象 (****) 获取当前的月 0-11,想要得到准确的月 +1 获取星期时候,星期日是 0 4.j ...
- day03.2-内置函数的使用
1. 取绝对值函数,abs() res = abs(-1) print(res) """ 运行结果:1 结果分析:计算-1的绝对值 """ ...
- Day03——Python函数
函数定义和使用 1.语法 def 函数名(参数): ... 函数体 ... 返回值 函数的定义主要有如下要点: def:表示函数的关键字 函数名:函数的名称,日后根据函数名调用函数 函数体:函数中进行 ...
- Day03:集合、文件处理和函数基础
上节课复习: 1.总结 可变/不可变: 可变类型:list,dict 不可变类型:int,float,str,tuple ...
随机推荐
- Java算法练习——无重复字符的最长子串
题目链接 题目描述 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 &qu ...
- Vue iview 表单封装验证
以下内容转自iview社区,仅供自己查看使用 Form表单部分 <div> <Form ref="FormOne" :model="FormOne&qu ...
- Q4:Median of Two Sorted Arrays
4. Median of Two Sorted Arrays 官方的链接:4. Median of Two Sorted Arrays Description : There are two sort ...
- transform—3D立方体
1.思路分析 第一步:首先需要一个大盒子,承载立方体的六个面: 第二步:立方体的六个面需要3D转化在特定的位置,拼接成一个立方体: 第三步:设置动画: 2.代码实现 第一步:创建div并且设置样式: ...
- Java线程——线程之间的死锁
一,什么是死锁? 所谓的死锁是指多个线程因为竞争资源而造成的一种僵局(相互等待),若无外力的作用,这些进程都不能向前推进. 二,死锁产生的条件? (1)互斥条件:线程要求对所分配的资源(如打印机)进行 ...
- Python中使用print打印进度条
import time for i in range(0,101,2): time.sleep(0.1) char_num = i//2 #打印多少个'*' per_str = '\r%s%% : % ...
- VMware DRS部分知识点
主机添加到集群中,不需要维护模式(有虚拟机开机状态时也可以添加进去). 主机从集群中移除,需要主机进入维护模式. HA和DRS 全自动 当设置虚拟机必须在主机上时 DRS优先级大于HA 就算主机挂了H ...
- Lyft、Uber、滴滴涉足汽车租赁领域,能打破既有汽车所有权模式吗?
自共享经济出现之后,众多相关项目遍地开花.这些共享经济项目对于人们来说,最直观的感受就是实惠.性价比高.方便.不过抛开这些使用层面的优点来看的话,共享经济项目最大的特色或许就是改变了事物的所有权.一件 ...
- 基于python的arcgis底图添加(转)
本文翻译自:Qingkai‘s Blog 当使用python的Basemap库绘制地图时,选择一个漂亮的底图会为图片增色不少,但是使用map.bluemarble().map.etopo()或者map ...
- spring容器抽象的具体实现
1.BeanFactory 接口与 ApplicationContext 接口 (1)spring 提供了两种类型的IOC容器实现.BeanFactory 和 ApplicationContext ( ...