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 ...
随机推荐
- Python 操作csv和excel表格
1. 操作csv表格 使用的库 csv 1. csv文件里读取数据 代码 1. 以列表形式打开 import csv f = open('csv_test.csv', 'r') # 打开csv文件 c ...
- [CISCN2019 总决赛 Day1 Web4]Laravel1
0x00 知识点 这个题核心就是找POP链,看了一下网上的WP,难顶啊.. 先贴上思路和poc,之后等熟练了再来做吧 https://glotozz.github.io/2019/11/05/buuc ...
- redis(七)---- SpringBoot和redis整合
SpringBoot和Redis整合非常简单 添加pom依赖 <dependency> <groupId>org.springframework.boot</groupI ...
- 对自己有用的VS调试技巧
设置下一条语句 编辑然后继续 符号越界后查看堆对象 查看数组的值 底部 设置下一条语句 返回顶部 一个典型的调试情况就是通过单步跟踪分析为什么一个函数调用失败了.当你发现一个函数调用的另一个函数返回错 ...
- php中const和define的区别
define部分:宏不仅可以用来代替常数值,还可以用来代替表达式,甚至是代码段.(宏的功能很强大,但也容易出错,所以其利弊大小颇有争议.)宏的语法为:#define 宏名称 宏值作为一种建议和一种广大 ...
- 9.scrapy pycharm调试小技巧,请求一次,下次直接调试,不必每次都启动整个爬虫,重新请求一整遍
pycharm调试技巧:调试时,请求一次,下次直接调试,不必每次都启动整个爬虫,重新请求一整遍 [用法]cmd命令运行:scrapy shell 网址 第一步,cmd进行一次请求: scrapy sh ...
- one_day_one_linuxCmd---sz命令
<坚持每天学习一个 linux 命令,今天我们来学习 sz && rz 命令> 前言:我们一般通过 ssh 客户端来进行远程登录和管理的,windows主机使用 ssh 登 ...
- Property or method "cancleInput" is not defined on the instance but referenced during render.
因为我的点击事件,是动态添加上去的 报错如标题 [Vue warn]: Property or method "cancleInput" is not defined on th ...
- 图形化编程娱乐于教,Kittenblock实例,为背景添加音乐
图形化编程娱乐于教,Kittenblock实例,为背景添加音乐 跟很多学生聊过,很多学生不是不努力,只是找不到感觉.有一点不可否认,同样在一个教室上课,同样是一个老师讲授,学习效果迥然不同.关键的问题 ...
- vue项目开始 首页 part1
stylus 优点:css之中使用一些变量,方便我们快速编写css 项目中我们使用css开发的辅助工具帮助我们开发网站样式 安装:终端打开我们项目的文件夹 npm install stylus --s ...