形参:位置参数:必须传
*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-函数的更多相关文章

  1. day03 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数

    本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数 温故知新 1. 集合 主要作用: 去重 关系测 ...

  2. 基础学习day03---程序结构与控制、函数与数组入门

    一.程序结构   1.顺序结构 2.选择结构 3.循环结构 二.顺序结构 程序至上而下逐行执行,一条语句执行完之后继续执行下一条语句,一直到程序的末尾 三.条件选择结构 选择结构是根据条件的成立与否, ...

  3. python学习大纲目录(转自alex博客https://www.cnblogs.com/alex3714/)

    day01: 介绍.基本语法.流程控制 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc是个什么鬼? 数据类型初识 数据运算 ...

  4. python开发学习-day03(set集合、collection系列 、深浅拷贝、函数)

    s12-20160116-day03 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: ...

  5. python之路:Day03 --- Python基础3 >>函数

    本节内容 1.函数基本语法及特性 2.参数 3.局部变量与全局变量 4.返回值 嵌套函数 5.递归 6.匿名函数 7.高阶函数 8.内置函数 一.函数基本语法及特性 区别 面向过程编程:根据业务逻辑从 ...

  6. Day03 - Python 函数

    1. 函数简介 函数是组织好的,可重复使用的,用来实现单一或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.Python提供了许多内建函数,比如print():也可以自己创建函数,这 ...

  7. 超全面的JavaWeb笔记day03<JS对象&函数>

    1.js的String对象(****) 2.js的Array对象 (****) 3.js的Date对象 (****) 获取当前的月 0-11,想要得到准确的月 +1 获取星期时候,星期日是 0 4.j ...

  8. day03.2-内置函数的使用

    1. 取绝对值函数,abs() res = abs(-1) print(res) """ 运行结果:1 结果分析:计算-1的绝对值 """ ...

  9. Day03——Python函数

    函数定义和使用 1.语法 def 函数名(参数): ... 函数体 ... 返回值 函数的定义主要有如下要点: def:表示函数的关键字 函数名:函数的名称,日后根据函数名调用函数 函数体:函数中进行 ...

  10. Day03:集合、文件处理和函数基础

    上节课复习:    1.总结        可变/不可变:            可变类型:list,dict            不可变类型:int,float,str,tuple         ...

随机推荐

  1. 51nod 1438:方阵与完全平方数

    1438 方阵与完全平方数 题目来源: mostleg 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题  收藏  关注 如果一个由正整数组成的n*n的方阵,满足以下 ...

  2. POJ 1080:Human Gene Functions LCS经典DP

    Human Gene Functions Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 18007   Accepted:  ...

  3. 对python里的装饰器

    内裤可以用来遮羞,但是到了冬天它没法为我们防风御寒,聪明的人们发明了长裤,有了长裤后宝宝再也不冷了,装饰器就像我们这里说的长裤,在不影响内裤作用的前提下,给我们的身子提供了保暖的功效. 再回到我们的主 ...

  4. GRUB&MBR引导

    (ubuntu下搜索gnome-disk可以打开磁盘管理) 简单开机过程 : ①按下电源后,计算机自检(POST),如果硬件设备(CPU.内存.硬盘.光驱.各种卡)都没有问题,BIOS会检查各个硬盘的 ...

  5. CTF -攻防世界-web新手区

    直接f12出来 先用get后加/?a=1 然后火狐装hackbar(老版本)f12 post b=2 搞定 Hackbar:https://github.com/Mr-xn/hackbar2.1.3 ...

  6. 80.常用的返回QuerySet对象的方法使用详解:order_by

    order_by: 将模型生成的表按照某个字段进行排序,默认情况下,按照升序的顺序排序,如果想要按照降序的顺序排序可以在字段的前面加一个"-",加一个负号就可以进行反转. mode ...

  7. 云平台发展前沿报告 微软云平台——Windows Azure

    微软云平台——Windows Azure Windows Azure 是微软研发的公有云计算平台.该平台可供企业在互联网上运行应用,并可进行扩展.通过Windows Azure,企业能够在多个数据中心 ...

  8. CocoaPods为多个target添加依赖库/Podfile的配置

    Podfile的相关配置,请看官方文档http://guides.cocoapods.org/syntax/podfile.html 1)多个target公用相同库,还可以添加额外的不同第三方库 编辑 ...

  9. git子模块使用

    如下项目有多个标红的子模块 1.首先进入每个子模块目录,init初始化子模块仓库,然后提交远程. 2.在每个子目录都初始化好仓库后,进入lv-qggz主目录,只初始化该仓库,然后依次添加子模块的仓库地 ...

  10. OpenCV和Qt的图像格式互转

    做图像处理的时候经常使需要用到opencv的,这应该是免费的图像处理库中用得最广泛而且最好用的库了吧.然后有时候想用界面来展示点东西的时候,我们就需要编写个界面,编写界面的方法千千万,弱水三千我只取一 ...