函数

day8

1.为什么需要函数

  1)代码的组织结构不清晰,可读性差

  2)需要重复使用某个功能时,需要重新编写成程序,重复率高

  3)多处引用相同代码时,需要扩展功能的时候过于麻烦,工作量大

2.函数的定义

  函数,类似于将某些特定的功能的代码打包起来,当需要用的时候直接拿来用,避免重新定义或者编写,例如Python内置的很多方法就是一个个已经打包好的函数,需要的时候直接拿来用,无序自己再打包定义一次

3.函数的分类

  如上描述的,Python中内置存在的函数称为内置函数,而我们在编写程序的过程中,出于自身 的需求自己定义的函数称为自定义函数

4.函数的使用

  遵循规则:先定义再调用

  1)实现

# 语法
# 函数名应该尽可能的体现函数实现的功能
def 函数名(参数1,参数2....):
'''
注释,描述函数的功能
'''
函数体
return 返回值
# 函数定义举例
# 定义
def max(x,y):
'''
比较两个数的大小
'''
if x > y:
print(x)
else:
print(y)
return x
# 调用
max(10,20)

注意:

  函数即‘变量’,在调用之前必须先定义,再调用,否者会报错

  2)定义函数的三种形式

    a.无参函数

def func():
print('我只是个简单的函数....')

    b.有参函数

      如上定义的比较两个数大小的函数,调用时必须传入参数,否则报错

    c.空函数

      无任何实际执行函数体的函数

def func():
pass

  3)函数的调用

    a.函数调用的名字

    b.根据名字调用代码,调用时函数名后必须加括号,且有参数时必须传入参数

  4)函数的返回值

    可返回多个值,且返回类型不限,如不写默认返回None

什么时候该有返回值?
调用函数,经过一系列的操作,最后要拿到一个明确的结果,则必须要有返回值
通常有参函数需要有返回值,输入参数,经过计算,得到一个最终的结果
什么时候不需要有返回值?
调用函数,仅仅只是执行一系列的操作,最后不需要得到什么结果,则无需有返回值
通常无参函数不需要有返回值

  5)函数调用的三种形式

    a.语句形式  func()

    b.表达式形式  4*len(ditc)

    c.用函数作为另一个函数的传入参数  func(max(10,1))

day8练习:

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

def change_txt(file,old_data,new_data):
with open(r'%s' %file,'rt',encoding='utf-8') as f_1:
data = f_1.read()
data = data.replace(old_data,new_data)
with open(r'%s' %file,'wt',encoding='utf-8') as f_2:
f_2.write(data) file = input('输入要修改的文件名>>').strip()
data_1 = input('要修改的内容>>').strip()
data_2 = input('修改后的内容>>').strip()
change_txt(file,data_1,data_2)

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

def count(msg):
num_count = 0
letter_count = 0
blank_count = 0
other = 0
for i in msg:
if i.isdigit():num_count += 1
elif i.isalpha():letter_count += 1
elif i.isspace():blank_count += 1
else:other += 1
print('数字个数:%s' % num_count)
print('字母个数:%s' % letter_count)
print('空格个数:%s' % blank_count)
print('其他:%s' % other) msg_inp = input('输入字符串>>')
print(len(msg_inp))
count(msg_inp)

day9

1.函数的参数

  分为两大类:形参和实参

  1)形参:即便变量名,定义函数时括号内的变量即为形参

  2)实参:即变量值,调用函数时绑定在变量名上,函数结束后解除绑定

2.参数应用

  根据调用的方式又可分为几大类:

  1)位置参数:括号内从左到右,按顺序一一对应

def func(x,y,z):
print(x,y,z)
# 对应于xyz分别为1、55、22
func(1,55,22)

  2)关键字参数:key=value形式

def func(x,y,z):
print(x,y,z)
# xyz的位置不固定
func(x=1,z=55,y=22)

  3)默认参数:在函数定义时赋予值,调用时如无重新传入的值则默认值不变

def func(x,y,z=33):
print(x,y,z)
# 默认值不变
func(x=1,y=22)

  4)可变长参数

    指传入参数的个数不固定,而实参有按位置和按关键字的两种形式定义,针对这两种形式的可变长,形参对应有两种方法解决:*args和**kwargs

  *args    

    a.*会将溢出的!!!位置实参!!!全部接收,然后保存成元组的形式赋值给args

def func(x,y,z,*args):
print(x,y,z)
print(args)
func(1,2,3,4,[1,2,2,5,],{'name':'zhang'})

    b.一旦实参前有* ,则把形参打散成多个参数

def func(x,y,z):
print(x,y,z)
func(*[1,2,2]) # *[] 把列表内的元组打散成三个参数
# func(*[1,2,2,'ss']) # 报错,打散后为四个参数,原函数只有三个形参
# func(*[1,2,]) # 报错

  **kwargs  

    a.**会将溢出的!!!关键字实参!!!全部接收,然后保存成字典的形式赋值给kwargs

def func(x,y,z,**kwargs):
print(x,y,z)
print(kwargs)
func(x='a',y='z',z='sss',ss=4444,sss=888)

    b.一旦碰到实参前加**,就把该实参的值打散

def func(x,y,z,**kwargs):
print(x,y,z)
print(kwargs)
func(1,2,3,**{'name':'zhang','age':18})

  混合使用

# 位置式参数以元组形式赋值给args
# 关键字参数以字典形式赋值给kwargs
def wapper(*args,**kwargs):
print(args)
print(kwargs)
wapper(12,12,545,488,66,a=555,sss=555)

注意:

  *args针对的位置实参,**kwargs针对的关键字实参

Python全栈-day8-day9-函数1的更多相关文章

  1. python全栈开发-Day9 函数对象、函数嵌套、名称空间与作用域

    一 .函数对象 一 .函数是第一类对象,即函数可以当作数据传递 可以被引用 可以当作参数传递 返回值可以是函数 可以当作容器类型的元素 二. 利用该特性,优雅的取代多分支的if def foo(): ...

  2. python全栈学习--day9(函数初始)

    Python 函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也 ...

  3. Python全栈之路----函数----返回值

    函数外部的代码想要获取函数的执行结果,就可以在函数里用return语句,把结果返回. def stu_register(name,age,course='PY',country='CN'): prin ...

  4. python全栈开发笔记---------函数

    一 数学定义的函数与python中的函数 初中数学函数定义:一般的,在一个变化过程中,如果有两个变量x和y,并且对于x的每一个确定的值,y都有唯一确定的值与其对应,那么我们就把x称为自变量,把y称为因 ...

  5. Python全栈day14-15-16-17(函数)

    一,数学定义的函数 函数的定义:给定一个数集A,对A施加对应法则f,记作f(A),得到另一数集B,也就是B=f(A).那么这个关系式就叫函数关系式,简称函数.函数概念含有三个要素:定义域A.值域C和对 ...

  6. python全栈学习--day11(函数高级应用)

    一,函数名是什么? 函数名是函数的名字,本质:变量,特殊的变量. 函数名()执行此函数 ''' 在函数的执行(调用)时:打散. *可迭代对象(str,tuple,list,dict(key))每一个元 ...

  7. python全栈学习--day10(函数进阶)

    一,引言 现在我有个问题,函数里面的变量,在函数外面能直接引用么? def func1(): m = 1 print(m) print(m) #这行报的错 报错了:NameError: name 'm ...

  8. Python全栈之路----函数----作用域

    Python中,一个函数就是一个作用域. 局部变量放置在其作用域中,根据作用域来区分,函数属于你,函数属于我. 定义完成后,作用域已经生成,使用时顺着作用域链向上查找. 函数定义完成后,不管被在哪儿被 ...

  9. Python全栈之路----函数----内置方法

    Built-in Functions abs() dict() help() min() setattr() all() dir() hex() next() slice() any() divmod ...

  10. Python全栈之路----函数进阶----名称空间

    又名name space,顾名思义就是存放名字的地方,存什么名字呢?举例说明,若变量x=1,1存放于内存中,那名字x存放在哪里呢?名称空间正是存放名字x与1绑定关系的=地方 名称空间共3种,分别如下 ...

随机推荐

  1. [skill] 异或

    都怪学习不好,或者老师教的不好.虽然知道异或的算法,但是始终不明白,到底有什么意义...直到今天,终于明白了. 还是应该怪我学的不好,不能怪老师. 今天有一个应用场景,写一个函数.这是一个hash表的 ...

  2. 图->连通性->无向图的连通分量和生成树

    文字描述 对无向图进行遍历时,对于连通图,仅需从图中任一顶点出发,进行深度优先搜索或广度优先搜索,便可访问到图中所有顶点.但对非连通图,则需从多个顶点出发搜索,每一次从一个新的起始点出发进行搜索过程得 ...

  3. jquery基础学习之DOM篇(二)

    在此之前请牢记,jquery 是一个合集对象!!!! 1.节点创建 js创建方法: 创建元素:document.createElement 设置属性:setAttribute 添加文本:innerHT ...

  4. jquery基础学习之样式篇(一)

    一.安装与使用 官网下载,然后引入 <script src="js/jquery-3.3.1.js"></script>,这是生产版本,开发版本替换成min ...

  5. 《linux 进程管理》- ps/top/kill/nice

    一:进程简述 二:ps 查看进程 语法 ps * -A 列出所有进程,和 -e 同等效果 * -a 列出不和本终端有关系的所有进程 * -w 显示加宽,可以显示较多信息 * -u 显示有效使用者相关的 ...

  6. jmeter发送https请求

  7. 根据Request获取客户端IP

    转自: http://www.cnblogs.com/icerainsoft/p/3584532.html http://www.cnblogs.com/bingya/articles/3134227 ...

  8. file 选取文件/文件夹

    一般网页上传文件大家都会用到这个标签 <input type="file" id="file_input"/> 我们可以通过这个标签选取文件,使用j ...

  9. SpringBoot-整合lombok

    添加lombok依赖 <dependency> <groupId>org.projectlombok</groupId> <artifactId>lom ...

  10. 【Python】【面试必看】Python笔试题

    前言 现在面试测试岗位,一般会要求熟悉一门语言(python/java),为了考验求职者的基本功,一般会出 2 个笔试题,这些题目一般不难,主要考察基本功.要是给你一台电脑,在编辑器里面边写边调试,没 ...