python语法之函数1
函数
计算机中的函数和数学中的函数不是一回事,而是一个subroutine 、子程序、procedures、过程。
作用:
1、减少重复代码;
2、方便修改,更易扩展;
3、保持代码的一致性。
最简单的一个函数程序:
def f(): #函数名的命名规则与变量的命名规则相同
print("ok")
f() #调用的时候一定要记得加括号,因为定义一个函数的时候,如果不加括号
那它只是一个变量
def add(a,b) #这里的a,b就是形参,下面的7和5是实参,都是一一对应的
print(a+b) 在函数没有被调用的时候,它只是被print到了内存里 >>>>>>12
add(7,5)
如何实现动态效果呢?
def f(index):
print("function %s"% index)
f(5) >>>>>>function 5 #这就实现了动态输入,index是几就输入几
这里要强调一下格式化输出:
f.write("%s end action %s \n"%(time_current,n))
简单的函数代码,避免重复代码的:
- def action1 (n):
- print("starting action1...")
- with open ("日志记录","a") as f:
- f.write("end action %s \n"% n)
- def action2 (n):
- print("starting action2...")
- with open ("日志记录","a") as f:
- f.write("end action %s \n"% n)
- def action3 (n):
- print("starting action3...")
- with open ("日志记录","a") as f:
- f.write("end action %s \n"% n)
- action1(1)
- action2(2)
- action3(3)
这个代码就显得用点啰嗦,因为每一个函数里面都包含
- with open ("日志记录","a") as f:
- f.write("end action %s \n"% n)这样的重复代码,这时就可以将重复的代码写成函数。
- import time
- def function(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))
- def action1 (n):
- print("starting action1...")
- function(n)
- def action2 (n):
- print("starting action2...")
- function(n)
- def action3 (n):
- print("starting action3...")
- function(n)
- action1(1)
- action2(2)
- action3(3)
效果是一样的,都是新建一个日志记录的文档,在里面输入
函数的相关参数:
def print_info(name,age):
print ("Name:%s"% name)
print("Age:%s"% age) >>>>>>name:menheng
print_info("mengheng",25) age:25 #必须参数
print_info(name="mengheng",age="25") #关键字参数
不定长参数:
高大上的加法器:
- def add(*args): #参数前面加个*表示不定长参数,用来存无命名的参数
- print(args)
- Sum=0
- for i in args:
- Sum+=i
- print(Sum)
- add(1,2,3,4,5)
请注意一般正常输入的不定长参数*arg都是以元组的形式输出,而如果在输入一个列表为[1,2,3]
输出的只能是([1,2,3],)为元组的一个元素,如果非要输出(1,2,3),则要在后面引用的f(*[1,2,3])
在括号里面加入*,同理**kwargs则是以字典的形式输出在下面的有命名参数中f(**{"name":"mengheng"})
这样就是传了字典过去。
- def print_info(*args,**kwargs):
- print(args)
- print(kwargs)
- print_info(*["alex","","male"],job="IT",hobby="girls",height="") #分为有命名的和没有命名的
>>>>>>('alex', '18', 'male')
{'job': 'IT', 'hobby': 'girls', 'height': '188'}
关于不定长的位置:*args放在左边,**kwargs参数放在右边。
所以函数参数的优先级就是从左到右
def func (name,age=22,*args,**kwargs) #从左到右就是关键字参数,默认参数,不定长参数
函数的返回值:
def f():
print("ok")
return 10
a=f()
print(a)
>>>>>>ok
10 #返回值的作用:1、结束函数 2、返回某个对象
注意点:1、如果函数没有返回值,那它的返回值就是none
2、如果return多个对象,那么python会帮我们把多个对象封装成一个元组返回。
函数的作用域:
python使用的LEGB的顺序来查一个符号对应的对象
locals-->enclosing-->globals-->builtins
对应的是:局部变量--》闭包空间--》全局变量--》内建模块
低级----》高级 低级只能看和输出,但是并不能改变高级变量
- count=10 #定义了一个全局变量
- def outer():
- global count #在改全局变量的时候必须要声明一下
- print(count)
- count=5
- print(count)
- outer()
找变量的时候必须是从里到外找(只能看和输出,不能改),不能从外向里找,如果要改就要声明一下。
- def outer():
- count = 10
- def inner():
- nonlocal count
- print(count)
- count=5
- print(count)
- inner()
- print(count)
- outer()
- >>>>>>10
5
5
python语法之函数1的更多相关文章
- python语法之函数
函数: 将特定功能代码编写在一个函数里 便于阅读和复用 对一组表达特定功能表达式的封装 使程序模块化 python内置函数: input(),print(),eval()... 函数定义 函数语法格式 ...
- python语法join函数
Python语法中join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串. vid = )
- python语法基础-函数-内置函数和匿名函数-长期维护
################## 内置函数 ####################### """ 一共是 68个内置函数: 反射相关的内置函 ...
- python语法------时间函数
1.导入函数库: import time 获取格式化的时间 你可以根据需求选取各种格式,但是最简单的获取可读的时间模式的函数是asctime(): #!/usr/bin/python # -*- co ...
- python语法_函数
---恢复内容开始--- 函数: 1 减少重复代码 2 定义一个功能,需要直接调用 3 保持代码一致性 def funcation_name(参数s): 功能代码块0 参数可以为多个,传入时按照前后 ...
- Python语法基础-函数,类以及调试处理
[TOC] 1. 函数的定义 python中函数有两种: python自带的函数 用户定义函数 返回多个值 原来返回值是一个tuple!但是,在语法上,返回一个tuple可以省略括号,而多个变量可以同 ...
- python语法基础-函数-装饰器-长期维护
######################################################### # 装饰器 # 装饰器非常重要,面试Python的公司必问, # 原则:开放封闭原则 ...
- python语法基础-函数-进阶-长期维护
############### 函数的命名空间和作用域 ############## """ # 函数进阶 命名空间和作用域 命名空间 全局命名空间——我们自 ...
- Python语法之函数、引用和装饰器
所谓函数,就是把具有独立功能的代码块组织成为一个小模块,在需要的时候调用 函数是带名字的代码块,用于完成具体的工作 需要在程序中多次执行同一项任务时,你无需反复编写完成该任务的代码,而只需调用该 任务 ...
随机推荐
- 如何才能成为一个合格的web前端工程师
转载原文地址:https://juejin.im/post/5cc1da82f265da036023b628 开篇前端开发是一个非常特殊的行业,它的历史实际上不是很长,但是知识之繁杂,技术迭代速度之快 ...
- Centos7 操作系统 mysql5.7 配置远程登陆操作
Centos7 操作系统: mysql5.7 配置远程登陆操作: 首先登陆服务器,进入数据库: mysql -u root -p show databases; use mysql; show tab ...
- CAtia_打开提示:许可证过期怎么办
CAtia_许可证过期怎么办:进计算机管理,点开服务和应用程序,点服务,找到DS License Server,在启动此服务的地方点启动,从而开启DS License Server.
- HTTP请求头与响应头(转载)
欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/400503 ...
- ArcGIS 图层旋转工具-arcgis案例实习教程
ArcGIS 图层旋转工具-arcgis案例实习教程 联系方式:谢老师,135-4855-4328,xiexiaokui#qq.com 目的:对输入图层执行坐标旋转 使用方法:输入图层,旋转中心,旋转 ...
- 从 TFS 迁移源代码到 git
准备工具: https://github.com/git-tfs/git-tfs 具体的安装步骤上面的 readme.md 中有说明.通过 Chocolatey 安装,如果本地没有 git ,会自动安 ...
- Jquery 字符串转数字
其实在jquery里把字符串转换为数字,用的还是js,因为jquery本身就是用js封装编写的. 比如我们在用jquery里的ajax来更新文章的阅读次数或人气的时候,就需要用到字符串转换为数字的功能 ...
- []、()、None的区别
def product(*numbers): if numbers == (): raise TypeError for x in numbers: if not isinstance (x, (in ...
- hdu 3065 AC自动机 标记数组不清零
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3065 题目里面要我们计算每种单词出现的次数,重叠的也要计算,那么我们在查找的时候不要把标记单词结尾的 ...
- python3 urllib 类
urllib模块中的方法 1.urllib.urlopen(url[,data[,proxies]]) 打开一个url的方法,返回一个文件对象,然后可以进行类似文件对象的操作.本例试着打开google ...