python函数的特性_Python学习(007)-函数的特性
一、.函数是什么
定义: 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可
特性:
1.代码重用
2.保持一致性
3.可扩展性
二、创建
2.1格式
1 def函数名(参数列表):2 函数体
2.2命名规则
函数名必须以下划线或字母开头,可以包含任意字母、数字或下划线的组合。不能使用任何的标点符号;
函数名是区分大小写的。
函数名不能是保留字
2.3 形参和实参
形参:形式参数,不是实际存在,是虚拟变量。在定义函数和函数体的时候使用形参,目的是在函数调用时接收实参(实参个数,类型应与实参一一对应)
实参:实际参数,调用函数时传给函数的参数,可以是常量,变量,表达式,函数,传给形参
区别:形参是虚拟的,不占用内存空间,.形参变量只有在被调用时才分配内存单元,实参是一个变量,占用内存空间,数据传送单向,实参传给形参,不能形参传给实参
defaction1(n):print ('starting action1...')
with open('日志记录','a') as f:
f.write('end action%s\n'%n)defaction2(n):print ('starting action2...')
with open('日志记录','a') as f:
f.write('end action%s\n'%n)defaction3(n):print ('starting action3...')
with open('日志记录','a') as f:
f.write('end action%s\n'%n)
action1(1)
action2(2)
action3(3)##***************代码重用
deflogger(n):
with open('日志记录','a') as f:
f.write('end action%s\n'%n)defaction1():print ('starting action1...')
logger(1)defaction2():print ('starting action2...')
logger(2)defaction3():print ('starting action3...')
logger(3)
action1()
action2()
action3()##***************可扩展和保持一致##为日志加上时间
importtimedeflogger(n):
time_format='%Y-%m-%d %X'time_current=time.strftime(time_format)
with open('日志记录','a') as f:
f.write('%s end action%s\n'%(time_current,n))defaction1():print ('starting action1...')
logger(1)defaction2():print ('starting action2...')
logger(2)defaction3():print ('starting action3...')
logger(3)
action1()
action2()
action3()
函数的特性展示
三、函数的参数
必备参数
关键字参数
默认参数
不定长参数
3.1必备参数
必需参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。
deff(name,age):print('I am %s,I am %d'%(name,age))
f('Nick',18)
f('xiaohong',16)
3.2关键字参数
关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值
deff(name,age):print('I am %s,I am %d'%(name,age))#f(16,'alvin') #报错
f(age=16,name='alvin')
3.3默认参数
调用函数时,缺省参数的值如果没有传入,则被认为是默认值。下例会打印默认的age,如果age没有被传入:
def print_info(name,age,sex='male'):print('Name:%s'%name)print('age:%s'%age)print('Sex:%s'%sex)returnprint_info('Nick',18)
print_info('小红',40,'female')
3.4不定长参数
可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数,和上述2种参数不同,声明时不会命名。
#def add(x,y):#return x+y
def add(*tuples):
sum=0for v intuples:
sum+=vreturnsumprint(add(1,4,6,9))print(add(1,4,6,9,5))
加了星号(*)的变量名会存放所有未命名的变量参数。而加(**)的变量名会存放命名的变量参数
def print_info(**kwargs):print(kwargs)for i inkwargs:print('%s:%s'%(i,kwargs[i]))#根据参数可以打印任意相关信息了
returnprint_info(name='Nick',age=18,sex='female',hobby='girl',nationality='Chinese',ability='Python')def print_info(name,*args,**kwargs):#def print_info(name,**kwargs,*args):报错
print('Name:%s'%name)print('args:',args)print('kwargs:',kwargs)returnprint_info('nick',18,hobby='girl',nationality='Chinese',ability='Python')#print_info(hobby='girl','alex',18,nationality='Chinese',ability='Python') #报错#print_info('Nick',hobby='girl',18,nationality='Chinese',ability='Python') #报错
还可以这样传参:
def f(*args):print(args)
f(*[1,2,5])def f(**kargs):print(kargs)
f(**{'name':'nick'})
高阶函数是至少满足下列一个条件的函数:
接受一个或多个函数作为输入
输出一个函数
defadd(x,y,f):return f(x) +f(y)
res= add(3,-6,abs)print(res)###############
deffoo():
x=3
defbar():returnxreturn bar
四、返回值
要想获取函数的执行结果,就可以用return语句把结果返回
注意:
函数在执行过程中只要遇到return语句,就会停止执行并返回结果,so 也可以理解为 return 语句代表着函数的结束
如果未在函数中指定return,那这个函数的返回值为None
return多个对象,解释器会把这多个对象组装成一个元组作为一个一个整体结果输出。
def add(*args):
Sum=0for i inargs:
Sum+=iprint(Sum)#return Sum
b=add(1,2)print(b)
结果:3
None
def add(*args):
Sum=0for i inargs:
Sum+=i#print(Sum)
returnSum
b=add(1,2)print(b)
结果:3
五、作用域
python中的作用域分4种情况:
L:local,局部作用域,即函数中定义的变量;
E:enclosing,嵌套的父级函数的局部作用域,即包含此函数的上级函数的局部作用域,但不是全局的;
G:globa,全局变量,就是模块级别定义的变量;
B:built-in,系统固定模块里面的变量,比如int, bytearray等。 搜索变量的优先级顺序依次是:作用域局部>外层作用域>当前模块中的全局>python内置作用域,也就是LEGB。
python函数的特性_Python学习(007)-函数的特性相关推荐
- python函数和模块的使用方法_Python学习06_函数和模块的使用
引入 在写有些代码的时候,会发现有些步骤重复了多次,他也不像循环,都是相同的东西在重复,而是指做某件事情的步骤方法,做事的人或对象发生了改变,但是方法却没有改变. 要想写出高质量的代码,首先要解决的就 ...
- python中setup函数的用法_python学习之setUp函数和tearDown函数
1,setUp():就是在一个类中最先被调用的函数,每次执行一个函数都要先执行这个函数,有几个函数就被调用几次,与放的位置无关,随便放到哪里都会先执行这个函数 2,tearDown():就是在一个类中 ...
- python函数的作用域_python学习第五篇 函数 变量作用域
原博文 2019-07-18 23:40 − 函数 函数是组合好的,可以重复使用的,用来实现单一或相关联功能的代码片段作用 能提高应用的模块性和代码的重复利用率函数的创建 第一函数的规则 1.函数代码 ...
- python巩固函数和模块_Python学习教程6:函数,模块和类的使用
Python函数 定义 函数是组织好的,可重复利用的,用来实现单一,或相关联功能的代码片段. 函数能提高应用的模块行,使代码逻辑更加的条理清晰. 内建函数 内建函数是Python中自带的,可供用户重复 ...
- python 函数 过程_python学习之函数(三)--函数与过程
1.函数与过程的区别: 有返回值的是函数,没有返回值的是过程: 函数(function):有返回值 过程(procedure):简单特殊,没有返回值 严格来说,python只有函数,没有过程.没有返回 ...
- python函数isdisjoint方法_Python学习之---Python中的内置函数(方法)(更新中。。。)...
add(item)#将item添加到s中,如果item已经在s中,则无任何效果 break#退出循环,不会再运行循环中余下的代码 bool()#将参数转换为布尔型 bytes()#将值转成bytes类 ...
- python自定义函数的关键字_python学习之--自定义函数:
Python之--自定义函数: 在Python中,定义一个函数要使用def语句,依次写出函数名.括号.括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回. 以下自定义 ...
- python函数实验心得_python学习心得
慕课网学习过程中,发现了很多有意思的高阶函数: reduce()函数也是Python内置的一个高阶函数.reduce()函数接收的参数和 map()类似,一个函数 f,一个list,但行为和 map( ...
- python好玩游戏的物品清单_Python学习笔记函数之小结好玩游戏的物品清单
随笔记录方便自己和同路人查阅. #------------------------------------------------我是可耻的分割线--------------------------- ...
最新文章
- datename mysql_SQL日期时间函数总结(MSSQL)
- LeetCode Algorithm 451. 根据字符出现频率排序
- 机器学习中的随机过程_机器学习过程
- sqlwarning mysql_mysql提示[Warning] Invalid (old?) table or database name问题的解决方法
- CSS之background-size属性
- 演练 可以飞可以喷火的人 java
- 工行金融级微服务架构的实践
- LivePlayer.js免费直播、点播播放器如何自适应div宽高集成播放视频
- python 库文件版本收集及安装
- 图神经网络——node2vec
- Python机器学习及实践——特征降维
- 23hh小说网——爬虫0.1python
- 递归应用之谢尔宾斯基三角形Python
- 安装windows server2008虚拟机
- 一文读懂APS系统的核心算法和数学理论
- 20行Python代码爬取王者荣耀全英雄皮肤改进版
- 论文《Contrastive Learning for Sequential Recommendation》
- 武汉流星汇聚:跨境电商的未来是跨境电商和区块链技术相结合
- java createfile,Java Filer.createSourceFile方法代碼示例
- Amdahl(阿姆达尔定律) Law
热门文章
- 金笛邮件之邮件倒入专题
- vector容器的end是指向最后一个元素的下一个位置,使用时要将迭代器减1,才能获取到最后一个
- css - 给图片添加蒙版
- 切单个图标为背景透明的方法
- 如何让div中的文字只显示一行,多余的文字隐藏并加上省略号(超链接形式)...
- xib加载的两种方式
- IE6不支持hover赋予css样式的解决方法 如div:hover li:hover支持
- 学习日记之单例模式和Effective C++
- mysql 控制台环境下查询中文数据乱码,插入、更新中文数据不成功
- ORACLE数据库维护