形参:位置参数:必须传
*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. git本地仓库连接同步修改远程仓库

    如何使用GIT BASH同步远程仓库 1. 新建一个目录 2. 右键GIT BASH 3. git clone git@github.com:purity12138/221701117.git (SS ...

  2. 聚类算法总结以及python代码实现

    一.聚类(无监督)的目标 使同一类对象的相似度尽可能地大:不同类对象之间的相似度尽可能地小. 二.层次聚类 层次聚类算法实际上分为两类:自上而下或自下而上.自下而上的算法在一开始就将每个数据点视为一个 ...

  3. 吴裕雄--天生自然MySQL学习笔记:MySQL DELETE 语句

    可以使用 SQL 的 DELETE FROM 命令来删除 MySQL 数据表中的记录. 可以在 mysql> 命令提示符或 PHP 脚本中执行该命令. 语法 以下是 SQL DELETE 语句从 ...

  4. INNER JOIN & OUTER JOIN

    INNER JOIN & OUTER JOIN 参考:sql

  5. one_day_one_linuxCmd---sz命令

    <坚持每天学习一个 linux 命令,今天我们来学习 sz && rz 命令> 前言:我们一般通过 ssh 客户端来进行远程登录和管理的,windows主机使用 ssh 登 ...

  6. Java并发分析—synchronized

    在计算机操作系统中,并发在宏观上是指在同一时间段内,同时有多道程序在运行. 一个程序可以对应一个进程或多个进程,进程有独立的存储空间.一个进程包含一个或多个线程.线程堆空间是共享的,栈空间是私有的.同 ...

  7. 永久使用mybase

    (1)关闭程序 (2)找到程序的安装路径:D:\mybase\mybase\nyfedit7pro (3)打开mybase.ini 文件,7以下版本文件名称为nyfedit.ini

  8. JVM探秘:jmap生成内存堆转储快照

    本系列笔记主要基于<深入理解Java虚拟机:JVM高级特性与最佳实践 第2版>,是这本书的读书笔记. jmap 命令用来生成内存堆转储快照,一般称为heapdump或dump文件. 除了使 ...

  9. java生成6位数所有组合

    for(int i=0;i<=9;i++){ String str=""; str=str+i; String strj=""; for(int j=0; ...

  10. IDEA查看代码最近修改人及日期

    如图,行号上右键,点击Annotate.即可查看