一、.函数是什么

定义: 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可

特性:

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)-函数的特性相关推荐

  1. python函数和模块的使用方法_Python学习06_函数和模块的使用

    引入 在写有些代码的时候,会发现有些步骤重复了多次,他也不像循环,都是相同的东西在重复,而是指做某件事情的步骤方法,做事的人或对象发生了改变,但是方法却没有改变. 要想写出高质量的代码,首先要解决的就 ...

  2. python中setup函数的用法_python学习之setUp函数和tearDown函数

    1,setUp():就是在一个类中最先被调用的函数,每次执行一个函数都要先执行这个函数,有几个函数就被调用几次,与放的位置无关,随便放到哪里都会先执行这个函数 2,tearDown():就是在一个类中 ...

  3. python函数的作用域_python学习第五篇 函数 变量作用域

    原博文 2019-07-18 23:40 − 函数 函数是组合好的,可以重复使用的,用来实现单一或相关联功能的代码片段作用 能提高应用的模块性和代码的重复利用率函数的创建 第一函数的规则 1.函数代码 ...

  4. python巩固函数和模块_Python学习教程6:函数,模块和类的使用

    Python函数 定义 函数是组织好的,可重复利用的,用来实现单一,或相关联功能的代码片段. 函数能提高应用的模块行,使代码逻辑更加的条理清晰. 内建函数 内建函数是Python中自带的,可供用户重复 ...

  5. python 函数 过程_python学习之函数(三)--函数与过程

    1.函数与过程的区别: 有返回值的是函数,没有返回值的是过程: 函数(function):有返回值 过程(procedure):简单特殊,没有返回值 严格来说,python只有函数,没有过程.没有返回 ...

  6. python函数isdisjoint方法_Python学习之---Python中的内置函数(方法)(更新中。。。)...

    add(item)#将item添加到s中,如果item已经在s中,则无任何效果 break#退出循环,不会再运行循环中余下的代码 bool()#将参数转换为布尔型 bytes()#将值转成bytes类 ...

  7. python自定义函数的关键字_python学习之--自定义函数:

    Python之--自定义函数: 在Python中,定义一个函数要使用def语句,依次写出函数名.括号.括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回. 以下自定义 ...

  8. python函数实验心得_python学习心得

    慕课网学习过程中,发现了很多有意思的高阶函数: reduce()函数也是Python内置的一个高阶函数.reduce()函数接收的参数和 map()类似,一个函数 f,一个list,但行为和 map( ...

  9. python好玩游戏的物品清单_Python学习笔记函数之小结好玩游戏的物品清单

    随笔记录方便自己和同路人查阅. #------------------------------------------------我是可耻的分割线--------------------------- ...

最新文章

  1. datename mysql_SQL日期时间函数总结(MSSQL)
  2. LeetCode Algorithm 451. 根据字符出现频率排序
  3. 机器学习中的随机过程_机器学习过程
  4. sqlwarning mysql_mysql提示[Warning] Invalid (old?) table or database name问题的解决方法
  5. CSS之background-size属性
  6. 演练 可以飞可以喷火的人 java
  7. 工行金融级微服务架构的实践
  8. LivePlayer.js免费直播、点播播放器如何自适应div宽高集成播放视频
  9. python 库文件版本收集及安装
  10. 图神经网络——node2vec
  11. Python机器学习及实践——特征降维
  12. 23hh小说网——爬虫0.1python
  13. 递归应用之谢尔宾斯基三角形Python
  14. 安装windows server2008虚拟机
  15. 一文读懂APS系统的核心算法和数学理论
  16. 20行Python代码爬取王者荣耀全英雄皮肤改进版
  17. 论文《Contrastive Learning for Sequential Recommendation》
  18. 武汉流星汇聚:跨境电商的未来是跨境电商和区块链技术相结合
  19. java createfile,Java Filer.createSourceFile方法代碼示例
  20. Amdahl(阿姆达尔定律) Law

热门文章

  1. 金笛邮件之邮件倒入专题
  2. vector容器的end是指向最后一个元素的下一个位置,使用时要将迭代器减1,才能获取到最后一个
  3. css - 给图片添加蒙版
  4. 切单个图标为背景透明的方法
  5. 如何让div中的文字只显示一行,多余的文字隐藏并加上省略号(超链接形式)...
  6. xib加载的两种方式
  7. IE6不支持hover赋予css样式的解决方法 如div:hover li:hover支持
  8. 学习日记之单例模式和Effective C++
  9. mysql 控制台环境下查询中文数据乱码,插入、更新中文数据不成功
  10. ORACLE数据库维护