找回密码
 立即注册
杭州6期1—何茹 +好友
这个人很懒什么都没写
听众
2
主题
19
金钱
236
个人名片
粉丝关注
还没有人关注TA
添加表情

python函数

已有 183 次阅读2021-4-29 20:04

一、什么是函数
定义:函数是组织好的,可重复使用的,用来实现单一,或相关联功能
的代码段。
函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提
供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做
用户自定义函数。

二、我们先了解python的结构
Python中的先要知道python程序结构:由目录(diretory),包(python package)、模块、函数组成,包里面包含了不同的模块,
其中模块中包含了一系列处理问题的函数或者类,常量,变量,同时模块可以理解为是一个.py文件(一个.py 文件就是一个模块)
(1)每个包中都包括"init.py"文件,该文件用表示当前目录是一个包
(2)其中包里面有无数个".py"文件组成,我们可以用类,变量和常量 等组成。
(3)对模块进行初始化就需要在包里面创建_init_.py 文件, init.py 文件作用就是用来导入包的时候初始化
目录和包的区别
(1)目录没有初始化文件,init.py,包里面有 ,件作用就是用来导入包的时候初始化
(2)显示不一样

函数:一个工具,随调随用
优点:
(1)降低代码冗余
(2)增加代码的复用性,提高开发效率
(3)提高程序扩展性
(3)函数有两个阶段:定义阶段,调用阶段。
(4)定义时:只检查函数体内代码语法,不执行函数体内代码。
(5)调用方便,比如:我们存储的过程,就是把所有的语句块,调用
(6)封装:就是把代码片段放在函数当中

三、两种种函数
第一种函数
案例
python中有很多内建函数----内建函数(内置函数)
mport time
print(“拿高薪”)
time.sleep(3)
print(“付出努力”)

第二种函数
自定义函数:==自己根据业务需求自己封装的函数
如何定义一个函数(自定义函数)
def 来定义一个函数
def 函数名称+英文的小括号()+英文的冒号结尾:
一个tab键就是4个小空格 (字符缩进默认长度是4个空格)
叫函数体
如何实现对函数的调用,来引用函数体中的代码
:函数调用函数体通过函数自己调用自己本身,函数调用函数自己(名称)




四、三种调用方法

第一种调用方法:(直接使用函数名+())
格式:
#自定义一个函数:
def fun(): #定义一个函数名称叫:fun 函数名称可以自定义
pass #函数体
fun() #函数来调用函数自己本身来得到函数体中的结果

第二种调用方法 (这种方法经常用来做调试)
def fun1(): #定义一个函数名称叫:fun1
print(‘hello!!!’) #函数体中输出一个值
def fun2():
print(“万元户们好”)
if name == ‘main’:
#fun1() # fun1函数调用函数自己
fun2() #fun2 函数调用函数自己

直接输入一个main ,在按tab键联想 ,就可以关联出来
这种调用的好处:就是可以在多个函数调用其中的几个就方便;
if name == ‘main’:#函数入口,当模块名等于要被主函数则执行如下代码
注意:主函数的入口下注释要用占位符pss,
函数的入口只能在本模块调用 ,以上两种都是在本模块的调用;
注意:如果调不了,就是命名的问题,不要和python中的命名一样

第三种方法:调用其他模块
aa模块
bb模块
备注:要使用import导入
场景一

场景二


五、函数参数

参数分形参、实参
形参:函数定义时括号内的参数
实参:函数调用时括号内的参数
形参相当于变量,实参相当于变量的值。


形参: 只在被调用时,才分配内存单元。调用结束,立刻释放所分配的内存。(形参只在函数内部有效)
实参:常量、变量、表达式、函数。 进行函数调用时,实参必须是确定的值。
位置参数:
  位置形参:函数定义时,从左往右写的参数,比如上面的 a, b , c
  位置实参:函数调用时,从左往右写的参数, 比如上面的 1,2,3
  位置形参定义多少个,调用时位置实参必须写上多少个,多一个少一个都不行。
关键参数:
  正常情况下,给函数传参数,要按顺序。如果不想按顺序,就用关键参数。
  指定参数名的参数,就叫做关键参数。
  函数调用时:func(a=1, b=2), 这种指定了参数名的参数,就是关键参数。
  调用函数时,关键参数可以和位置参数一起用,但是关键参数必须在位置参数的后面。不然会报错。
默认参数:
  函数定义时,默认参数必须在位置形参的后面。
  函数调用时,指定参数名的参数,叫关键参数。
  而在函数定义时,给参数名指定值的时候,这个参数叫做默认参数。
  关键参数,和默认参数两个参数写法一样,区别在于:
    关键参数是在函数调用时,指定实参的参数名,也可以说指定值的参数名。
    默认参数是在函数定义时,指定参数名的值。

不带参数的函数

函数中有单个参数

函数中有多个参数·

函数定义时带上默认参数(缺省参数)(也叫默认参数)

当多种参数同时出现在函数中,默认参数要放在最后的位置,不能放在形式参数的前面



在函数中可变长元组和可变长字典的引用

可变长的元组:*
可变长字典:**


遍历的可变长元组

‘’‘可变长定义:定义一个可变长元组后,函数调用处,可以给当前可变长形参赋予N个实参
如没有定义是可变长元组:在函数调用处只能给对应形参对应个数的具体实参’’’

定义一个函数 形参定义为可变长字典类型
print(name) #打印字典
if name == ‘main’:
fun1(name=‘zhangsan’,age=18) #{‘name’: ‘zhangsan’, ‘age’: 18}

定义一个字典,进行传参


可变长字典后面不能接普通形参变量

1)如当前函数中定义的是可变长字典:字典后后面不能在定义普通的形参变量,也不能定义可变长元组:

(2)元组的后是可以在定义一个普通形参变量,也可以在后面定义一个可变长字典’’’



函数中同时出现可变长元组和可变长字典
def fun1(*name,**dic):
print(name,dic)

d ={‘name’:“xioawang”,‘age’:19}
if name == ‘main’:
fun1(‘zhangsan’,‘lisi’,name=‘wangwu’,age=18)
8.2
def fun1(*name,**dic):
print(name,dic)

d ={‘name’:“xioawang”,‘age’:19}
if name == ‘main’:
fun1(‘中国’,d) # 实参‘中国’,可变长字典d
打印结果(‘中国’,) {‘name’: ‘xioawang’, ‘age’: 19}
 注意点:当可变长元组和可变长字典同时出现时,默认将可变长字典放后面
 


五、函数的变量和作用域

1、在函数中也可以定义变量,在函数中定义的变量被称之为局部变量,局部变量
只在定义它的函数内部有效
 2、在函数体之外定义的变量,我们称之为全局变量。


实例讲解一

定义的函数内部的变量名如果是第一次出现, 且在=符号前,那么就可以认为是
被定义为局部变量。在这种情况下,不论全局变量中是否用到该变量名,函数中
使用的都是局部变量。

num=100 #全局变量
def func():
num=200 #局部变量
print num #打印局部变量
func() #函数调的是局部变量
print num #打印全局变量

实例讲解二

函数内部的变量名如果是第一次出现,且出现在=符号后面,且在之前已被
定义为全局变量,则这里将引用全局变量。例如:
num=100
def func():
sum = num+100 #引用全局变量
print sum
func()


实例讲解三:
在函数中将某个变量定义为全局变量时需要使用关键字global、例如:
num=100
def func():
global num #声明成一个全局变量、原有全局变量的值会被覆盖
num=200
print num
func()
print num



六、函数的返回值

Python中,用 def 语句创建函数时,可以用 return 语句指定应该返回的值,
该返回值可以是任意类型。需要注意的是,return 语句在同一函数中可以出
现多次,但只要有一个得到执行,就会直接结束函数的执行。
return [返回值] 


返回值的作用
1、在程序开发中,有时候会希望一个函数执行程序结束后,告诉
调用者一个结果,以便调用者针对具体的结果做后续的处理。
2、返回值是函数完成工作后,最后给到调用者的一个结果。
3、在函数中使用return关键字可以返回结果。
4、调用函数的一方可以使用变量来接收函数的返回结果

七、Python内置函数
format()函数是一种格式化字符串的函数 ,该函数增强了字符串格式化的功能。
基本语法:是通过 {} 来代替以前的 %
1、不设置指定位置,按默认顺序
a="{} {}".format("hello","duoceshi")
2、设置指定索引位置输出
a="{0} {1} {0}".format("hello","duoceshi")
3、设置参数输出
a="姓名:{name},年龄:{url}".format(name="duoceshi",age=18)

4、对列表进行格式化
a=['多测师','www.duoceshi.com']
大括号里面的0代表的是列表、中括号里面的0和1是列表元素对应的索引位
b="网站名:{0[0]}, 地址 {0[1]}".format(a)

5、对字典进行格式化 "**"表示可变长字典
a={"name":"多测师","url":"www.duoceshi.com"}
b="网站名:{name}, 地址:{url}".format(**dic)

zip()函数

 
1、zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成
一个个元组,然后返回由这些元组组成的列表,如果各个迭代器的元素个
数不一致,则返回列表长度与最短的对象相同。

实例讲解:
a=['name','url']
b=['duoceshi','www.duoceshi.cn']
c=zip(a,b) #通过zip方法转换成元组放入列表当中
d=dict(c) #利用字典的方法转换成字典


open()函数
open() 函数用于打开一个文件,创建一个 file 对象
语法:open(file, mode),模式有r(只读),w(写入覆盖),a(写入追加)
1、读的模式: r(只读)
o=open("C:\\aa.txt",'r');
a=o.read() #读取文件中所有内容返回字符串
b=o.readline() #读取文件中第一行内容
c=o.readlines() #读取文件中所有内容返回列表


2、读相关函数文件中包含中文字符的解决方法
o = open(r'C:\aa.txt','r')
all = o.read()
print all.decode('gbk') #进行解码为gbk编码


3、路径中包含中文字符的解决方法
path = unicode(r'C:\多测师\aa.txt',encoding='utf-8')
o = open(path,'r')
a = o.read()
print a


4、写的模式:w(写入覆盖)
o=open("C:\\aa.txt",'w');
o.write("hello duoceshi")
o.writelines("hello duoceshi")
o.close() #关闭文件


5、追加的模式:a(写入追加)
o.write("hello duoceshi")
o.writelines("hello duoceshi") #\n表示换行
o.close()


open()函数扩展用法
with open("C:\\aa.txt", 'r')as f:
a = f.read()
b = f.readline()
c = f.readlines()
d = f.write()
e = f.writelines()
用with语句的好处,就是到达语句末尾时,会自动关闭文件,即便出现异常。





评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 立即注册