函数

  如果在开发程序时,需要某块代码多次,但是为了提⾼编写的效率以及代码的重⽤,所以把具有独⽴功能的代码块组织为⼀个⼩模块,这就是函数

函数的定义

  函数定义的三种方式:无参函数,有参函数,空函数

#无参函数
def demo_print():print('hello')#有参函数
def add(x,y):print(x+y)#空函数
def foo(x,y):pass

函数调用

  调⽤函数很简单的,通过函数名() 即可完成调⽤:demo_print()

  函数使用的原则是:先定义,再调用

函数的注释

def demo_ano():'''注释'''print('-------')

  使用help(demo_ano)可以看到函数的相关说明

函数参数

  形参与实参:形参即变量名,实参即变量值,函数调用时将实参赋值给形参 

def add(a,b):s=a+breturn sadd(1,2)#(a,b)为形参,(1,2)为实参

  位置参数:按照从左到右的顺序定义的参数

def add(num1,num2):s=num1+num2return sadd(5,6)(num1,num2)为位置形参,(5,6)为位置实参

  关键字参数:按照key=value的形式定义的参数

def login(name,pwd):if name=='luoli' and pwd=='123456':print('Login Sucess')else:print('Login failed')login(pwd='123456',name='luoli')

  默认参数:形参在定义时就已经为其赋值

def add(a,b=3):s=a+bprint(s)add(3)
add(5,10)默认参数只在定义时赋值一次,可以传值,也可以不传值,默认参数的定义应该在位置参数的右边,默认参数通常定义成不可变类型

  可变长参数:可变长指的是实参值得个数不固定,实参位置实参和关键字实参两种,针对这两种形式的可变长参数,形参有对应的两种方式来存放它们,即*args和**kwargs

  *args

def foo(x,y,*args):print(x,y)print(args)foo(1,2,3,4,5)def foo(x,y,z):print(x,y,z)foo(*[1,2,3])

  **kwargs:必须按照key=value的方式赋值

def foo(x,y,**kwargs):print(x,y)print(kwargs)foo(1,2,z=3,p=4,q=5)def foo(x,y,**kwargs):print(x,y)print(kwargs)foo(**{'z':1,'x':2,'y':4})

  *args,**kwargs:对于任意函数,都可以通过类似func(*args, **kw)的形式调用它,无论它的参数是如何定义的

  命名关键字参数:*后定义的参数,必须被传值(有默认值的除外),且必须按照关键字实参的形式传递

def foo(x,y,*args,a=1,b,**kwargs):print(x,y)print(args)print(a)print(b)print(kwargs)foo(1,2,3,4,5,b=3,c=4,d=5)

函数返回值

  所谓“返回值”,就是函数中程序完成后,最后给调⽤者返回的结果,如果想要使用这个结果,那么就需要保存该返回值

def add(a,b):return a+bres=add(1,2)
print(res)

函数类型

  无参数,无返回值

def demo_print():print('test')demo_print()

  无参数,有返回值

import time
def get_time():current_time=time.time()return current_timeres=get_time()
print(res)

  有参数,无返回值

  此类函数,能接收参数,但不可以返回数据,⼀般情况下,对某些变量设置数据⽽不需结果时,⽤此类函数

  有参数,有返回值

def add(a,b):return a+bres=add(100,200)
print(res)

练习

  (1)写函数,,用户传入修改的文件名,与要修改的内容,执行函数,完成批量修改操作

def modify_file(source_file,old,new):import oswith open(source_file,'r',encoding='utf-8') as read_f,\open('.bak.swap','w',encoding='utf-8') as write_f:for line in read_f:if old in line:line=line.replace(old,new)write_f.write(line)os.remove(source_file)os.rename('.bak.swap',source_file)

View Code

  (2)写函数,计算传入字符串中【数字】、【字母】、【空格] 以及 【其他】的个数

def count(charac):d={'num':0,'str':0,'space':0,'others':0,}for i in charac:if i.isdigit():d['num']+=1elif i.isalpha():d['str']+=1elif i.isspace():d['space']+= 1else:d['others']+=1return d
#res=count('hello123 hh ****')
#print(res)

View Code

  (3)写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5

def my_len(model):i=len(model)if i > 5:print('%s长度大于5'%model)else:print('%s长度小于5'%model)# my_len([1,2,3,4,5,6])
# my_len('sdf')

View Code

  (4)写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者

def li_len(li):if len(li)>2:li=li[0:2]return lires=li_len([1,2,3,4])
print(res)

View Code

  (5)写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者

def mod_odd(mod):mod=mod[::2]return modres=mod_odd([1,2,3,4,5])
print(res)

View Code

  (6)写函数,检查字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者

def di_len(di):for k,v in di.items():if len(v) > 2:di[k]=v[0:2]return didic = {"k1": "v1v1", "k2": [11,22,33,44]}
res=di_len(dic)
print(res)

View Code

 

转载于:https://www.cnblogs.com/iamluoli/p/8082873.html

第三章 Python函数相关推荐

  1. 第三章 Python函数基础及进阶

    第三章 函数基础及进阶 3.1 上章补充内容 3.1.1 Bytes类型 计算机的数据需要存到硬盘上,但是硬盘只能存储二进制的数据. 我们知道将计算机里的数据转换成我们能看懂的数据是将二进制 -> ...

  2. 【Python学习笔记—保姆版】第三章—Python流程控制、函数的定义、常见错误、模块与包、类

    第三章-python函数.分支结构 流程控制 if-else for 循环 while循环 continue/break range()函数 列表与元组遍历 练习 函数的定义 变量作用域 基本形式 函 ...

  3. 《Python数据分析基础教程:NumPy学习指南(第2版)》笔记6:第三章 常用函数2——中位数、方差、日期、展平

    本章将介绍NumPy的常用函数.具体来说,我们将以分析历史股价为例,介绍怎样从文件中载入数据,以及怎样使用NumPy的基本数学和统计分析函数.这里还将学习读写文件的方法,并尝试函数式编程和NumPy线 ...

  4. 《Python数据分析基础教程:NumPy学习指南(第2版)》笔记5:第三章 常用函数1——文件读写、算术平均值、最大值最小值、极值

    本章将介绍NumPy的常用函数.具体来说,我们将以分析历史股价为例,介绍怎样从文件中载入数据,以及怎样使用NumPy的基本数学和统计分析函数.这里还将学习读写文件的方法,并尝试函数式编程和NumPy线 ...

  5. 《Python数据分析基础教程:NumPy学习指南(第2版)》笔记8:第三章 常用函数4——线性模型、数组修剪与压缩、阶乘

    本章将介绍NumPy的常用函数.具体来说,我们将以分析历史股价为例,介绍怎样从文件中载入数据,以及怎样使用NumPy的基本数学和统计分析函数.这里还将学习读写文件的方法,并尝试函数式编程和NumPy线 ...

  6. 第三章 Python Kivy 学习 -- Kivy官方入门教程Pong Game

    系列文章目录 第一章 Python Kivy 学习 – Kivy介绍及环境安装 第二章 Python Kivy 学习 – Kivy项目开发原理(待编辑) 第三章 Python Kivy 学习 – Ki ...

  7. 【C语言笔记初级篇】第三章:函数与递归

    第三章:函数 (1)函数是什么 在计算机科学中,子程序是一个大型程序中的某部分代码, 由一个或多个语句块组成.它负责完成某项特定任务,而且相较于其他代码,具备独立性.一般会有输入参数并有返回值,提供对 ...

  8. javascript进阶课程--第三章--匿名函数和闭包

    javascript进阶课程--第三章--匿名函数和闭包 一.总结 二.学习要点 掌握匿名函数和闭包的应用 三.匿名函数和闭包 匿名函数 没有函数名字的函数 单独的匿名函数是无法运行和调用的 可以把匿 ...

  9. Python入门 - 笔记 - 第三章 Python中的变量和数据类型

    第三章 Python中的变量和数据类型 -------------------------------------------------------------------------------- ...

最新文章

  1. (翻译) MongoDB(13) 在 Ubuntu 上安装MongoDB社区版
  2. 【转载】用 Pyinstaller 来打包 + 解决打包结果过大问题
  3. Netiler 开发规范
  4. 《复杂》读书笔记(part6)--计算机中的自我复制
  5. java math 类_Java Math类静态长轮(double d)示例
  6. python3 读取文本文件_python3读取文件最简单的办法
  7. 玩转keybd_event
  8. vb.net利用SerialPort进行读取串口操作
  9. windows环境:dos 通过ftp连接到vsftpd 显示乱码解决方法
  10. 用dockers实现mysql主从同步
  11. C盘空间太小,建议删除如下文件以释放空间!
  12. 洛谷1031 均分纸牌 解题报告
  13. 坐标系投影转换CGCS2000坐标系(国家2000坐标系)等高线地形图
  14. 关于树莓派无法解析域名的错误
  15. 计划评审技术(PERT)求工期、标准差、方差以及概率
  16. linux diff使用方法,Linux diff 使用教程
  17. 网络协议MPL(3):RFC2606--The Trickle Algorithm文档翻译
  18. D. Cloud of Hashtags(逆向贪心)
  19. 根据银行卡获取发卡行信息
  20. 数字签名标准算法——DSA

热门文章

  1. python finally语句里面出现异常_Python异常处理中的else和finally
  2. python 合并word文件_python自动化办公(1)—— 批量合并word文档
  3. 收获,不止SQL优化——抓住SQL的本质--第二章
  4. golang转义json字符串
  5. docker安装的PHPFPM容器Redis扩展
  6. php隐藏IP最后位,替换手机号中间数字为*号
  7. 《Go 语言程序设计》读书笔记 (九) 命令工具集
  8. 小提琴机器人拉法_小提琴的拉琴姿势探讨
  9. 关于@Mapper注解的几个问题
  10. 实现数组和List之间的相互转换