形参:位置参数:必须传
*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. 【转】pip升级不成功怎么办

    python -m pip install --upgrade pip -i https://pypi.douban.com/simple

  2. [WesternCTF2018]shrine

    0x00 知识点 SSTI模板注入: 模板注入涉及的是服务端Web应用使用模板引擎渲染用户请求的过程 服务端把用户输入的内容渲染成模板就可能造成SSTI(Server-Side Template In ...

  3. HDU - 1068 Girls and Boys(二分匹配---最大独立集)

    题意:给出每个学生的标号及与其有缘分成为情侣的人的标号,求一个最大集合,集合中任意两个人都没有缘分成为情侣. 分析: 1.若两人有缘分,则可以连一条边,本题是求一个最大集合,集合中任意两点都不相连,即 ...

  4. 十分简明易懂的FFT(快速傅里叶变换)

    https://blog.csdn.net/enjoy_pascal/article/details/81478582 FFT前言快速傅里叶变换 (fast Fourier transform),即利 ...

  5. 四、python杂项

    一.pycharm单行和多行注释快捷键                        多行注释就一个组合键:选中+Ctrl+/

  6. java字符串排序(数字,字母,汉字等组合排序)

    package cn.cnnho.backstage.utils; import java.util.ArrayList;import java.util.Arrays;import java.uti ...

  7. java设计模式--六大原则

    一.单一职责原则 单一职责原则:就一个类而言,应该仅有一个引起它变化的原因.通俗来说,就是互相不相关的属性和方法不要放在一个类中,就好比之前简单工厂模式中介绍的那样,客户端(Customer)应该与工 ...

  8. 堆--P1168 中位数

    题目描述 给出一个长度为N的非负整数序列Ai​,对于所有1≤k≤(N+1)/2,输出A1,A3,…,A2k−1的中位数.即前1,3,5,…个数的中位数. 输入格式 第1行为一个正整数N,表示了序列长度 ...

  9. 阿里云ECSLinux系统下挂载磁盘

    最近公司服务器老是提示磁盘空间不足,原因是以前的业务负责人开了Tomcat的debug日志并且没有做日志轮询,所以日志量非常大.当我做了日志切割轮询后发现磁盘还是太小才40G,按理外网服务器怎么可能这 ...

  10. Mac技巧-如何切换至 Mac 地图应用的卫星视图模式

    如何切换至Mac地图应用的卫星视图模式?很多刚接触MAC电脑的小伙伴并不是很清楚,今天MACW小编就教教大家切换至 Mac 地图应用的卫星视图模式该怎么做.原文:https://www.macw.co ...