多测师肖sir_高级金牌讲师_python之函数007

python之函数

一、什么是函数
(1)定义:函数是组织好的,可重复使用的,用来实现单一,或相关联功能 的代码段。
(2)python的结构,(函数写在.py文件下)
多测师肖sir_高级金牌讲师_python之函数007_第1张图片
多测师肖sir_高级金牌讲师_python之函数007_第2张图片

(3)函数的优点:
1、降低代码冗余
2、增加代码的复用性,提高开发效率
3、提高程序拓展性
4、函数有两个阶段:定义阶段,调用阶段
定义时:只检查函数体内代码语法,不执行函数体内代码
调用方便
5、封装:就是把代码片段放在函数当中

二、函数的使用

1、自定义函数
自定义函数:自己根据业务需求自己封装的函数

2、如何定义一个函数(自定义函数)
1、可以使用def关键字来创建Python自定义函数,
格式:
def 函数名(参数列表)
函数体
函数名() #调用函数
案例1:
def func():
print(“1”)
def func2():
print(2)
def func3():
print(3)
def func4():
print(4)
备注: def 函数名()英文括号 :
tab 就是4小格
函数体
函数名() #调用函数

多测师肖sir_高级金牌讲师_python之函数007_第3张图片

2、函数的调用有三种方法:
主函数的解释: 解释: if name == ‘main’: 是函数的入口,也称为主函数 name 是当前模块名,当模块被直接运行时模块名为 main ,这句话的 意思就是,当模块被直接运行时,以下代码块将被运行,当模块是被导入时, 代码块不被运行

(1)在本模块直接调用
函数名()
多测师肖sir_高级金牌讲师_python之函数007_第4张图片
(2)main的调用方法
if name == ‘main’:
main底下不能为空
用pass来占位
多测师肖sir_高级金牌讲师_python之函数007_第5张图片

(3)不同模块的调用函数
ss文件:

def a():
print(“杭州多测师”)
print(“上海多测师”)
def b():
print(“深圳多测师”)
print(“广州多测师”)
def c():
print(“武汉多测师”)
print(“成都多测师”)
cc文件:
from hz1201.ss import *

a()
多测师肖sir_高级金牌讲师_python之函数007_第6张图片
(3)
ss文件
多测师肖sir_高级金牌讲师_python之函数007_第7张图片
cc文件
多测师肖sir_高级金牌讲师_python之函数007_第8张图片
案例:
多测师肖sir_高级金牌讲师_python之函数007_第9张图片
多测师肖sir_高级金牌讲师_python之函数007_第10张图片

===============
三、函数中的参数

(1)函数中无参数

(2)函数中有单个参数
def ss(a):
print(a)
ss(2)
多测师肖sir_高级金牌讲师_python之函数007_第11张图片

(3)函数中有多个参数
def ss(a,b):
print(a+b)
ss(1,2)
多测师肖sir_高级金牌讲师_python之函数007_第12张图片

(4)函数定义时带上默认参数(缺省参数)
def ss(a,b=1):
print(a+b)
ss(2,2)
多测师肖sir_高级金牌讲师_python之函数007_第13张图片
注意:
传入参数优先级要高于默认参数

(4)可变长参数中的可变长元组 ""表示的是可变长元组(
def ss(*a):
print(a)
ss(2,2,3,4,6,7) #结果(2, 2, 3, 4, 6, 7)
多测师肖sir_高级金牌讲师_python之函数007_第14张图片

(5)当普通参数和可变长元组在一起,普通参数在前,可变长元组在后
def ss(b,*a):
print(b,a)
ss(“a”,2,2,3,4,6,7)
多测师肖sir_高级金牌讲师_python之函数007_第15张图片

(6)可变长参数中的可变长字典 ""表示的是可变长字典(
(1)传可变长字典
def ss(**a):
print(a)
ss(name=“cy”,age=18,sex=“男”)
多测师肖sir_高级金牌讲师_python之函数007_第16张图片

(2)可变长字典和普通参数
def func(a,**dict):
print(a)
print(dict)
func(‘ss’,name=‘zs’,age=“18”)

多测师肖sir_高级金牌讲师_python之函数007_第17张图片

(3)可变长字典和可变长元组
def ss(*b,**a):
print(b)
print(a)
ss(1,2,3,4,name=“cy”,age=18,sex=“男”)
多测师肖sir_高级金牌讲师_python之函数007_第18张图片

(4)普通参数和可变长字典和可变长元组
def func(a,*b,**dict):
print(a)
print(b)
print(dict)
func(‘ss’,1,2,3,name=‘zs’,age=“18”)
多测师肖sir_高级金牌讲师_python之函数007_第19张图片
直接调用变量(列表,元组,字典)
list=[1,2,3,4]
tuple=(5,6,7,8)
dict={“name”:‘zs’,‘age’:‘18’}
def func(a):
print(a)
func(list)
func(tuple)
func(dict)
多测师肖sir_高级金牌讲师_python之函数007_第20张图片

===============
四、函数的变量和作用域
全局变量:函数的变量和作用域
局部变量:在函数中也可以定义变量,在函数中定义的变量被称之为局部变量,局部变量 只在定义它的函数内部有效
优先级:局部变量>global 全局变量>全局变量

案例1:

a1=100 #全局变量
def  func():
    a1=10  #局部变量
    print(a1)
def func1():
    print(a1)
func()
func1()


多测师肖sir_高级金牌讲师_python之函数007_第21张图片

多测师肖sir_高级金牌讲师_python之函数007_第22张图片

案例2:
global 将局部变量设置成全局变量,
global 全局变量优先级高于 直接定义的全局变量

a1=100 #全局变量
def  func():
   global a1#通过global将局部变量变成全局变量
   a1=10
   print(a1)
def func1():
    print(a1)
func()
func1()

多测师肖sir_高级金牌讲师_python之函数007_第23张图片

=====================
五、函数的返回值
Python中,用 def 语句创建函数时,可以用 return 语句指定应该返回的值, 该返回值可以是任意类型。需要注意的是,return 语句在同一函数中可以出 现多次,但只要有一个得到执行,就会直接结束函数的执行。 函数中,使用 return 语句的语法格式如下: return [返回值] 其中,返回值参数可以指定,也可以省略不写(将返回空值 None)

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

def func1():
s=func() #使用变量s来接收函数的返回结果
c=s+1
print©
#func()
func1()

多测师肖sir_高级金牌讲师_python之函数007_第24张图片

print 打印出来的结果;
return 返回的就一个值

==============================
返回值作业:

返回值实战练习
需求:登录银行系统并显示余额,有两个功能第一个是登录,第二个是登录后显示余额,先登录然后根据登录是否成功然后是否显示余额。
分析思路:如果想查询到余额,前提必须登录,所以现在我们用两个函数来处理,第一个函数实现登录,第二个函数实现余额查询,调用第一个函数得到的结果给第二个函数,然后第二个函数根据结果进行代码处理。

案例1:
import time
import getpass
dict1 = {‘账号’: ‘admin’, ‘密码’: ‘123456’, ‘余额’: 998001}
name = input(‘请输入账号:’)
password = input(‘请输密码:’)
if name == ‘admin’ and password == ‘123456’:
print(‘登录成功!’)
time.sleep(1)

def yue():
    return dict1['余额']

yue1 = yue()
print(f"当前余额为:{yue1}")

else:
print(‘用户名或密码错误!’)
案例2:

m = 100000
def login():
    username = input('请输入用户名:')
    password = input('请输入密码:')
    if username == 'admin':
        if password == '123456':
            return 0
    else:
        return 1
def money():
    if login() == 0:
        print('登录成功!余额为:',m)
    else:
        print('登录失败,请重试!')
money()

案例2:

def login():
    while 1:
        username = input("请输入用户名:")
        password = input("请输入密码:")

        if username == "admin" and password == "123456":
            return 1
        else:
            ch = input("用户名或密码错误,请重新输入用户名和密码,按 q 退出登录或其他任意键继续:")
            if ch == "q":
                break


def bank():
    while 1:
        login_y = login()

        if login_y:
            print("登录成功!")
            incom = 10000
            print("您的余额为:", incom)

            ch = input("按'q'退出登录或其他任意键切换账号登录:")
            if ch.lower() == "q":
                break
            else:
                continue
        else:
            print("退出登录!")
            break
if __name__ == '__main__':
    bank()
``
方法3:

```python
def dl():
    a=input('请输入账号:')
    if a=='zxw':
        b=input('请输入密码:')
        if b=='666':
            return '登录成功'
        else:
            return '密码错误,登录失败'
    else:
        return'账号错误,登录失败'
def cx():
    s=dl()
    if s=='登录成功':
        print('余额100元')
    elif s== '密码错误,登录失败':
        print('密码错误请重新输入!')
    else:
        print('账号错误请重新输入')

if __name__ == '__main__':
 cx()

y=1
def login():
    user=input("请输入用户名账号:")
    if user=="yinhang123":
        password=input("请输入密码:")
        if password=="123456":
            return y
        else:
            print("密码错误,退出")
            return 0
    else:
        print("用户名错误,退出")
        return 0
def check():
    if login()==y:
        print("余额为123")


===============================
python内置函数多测师肖sir_高级金牌讲师_python之函数007_第25张图片
1、format函数
format()函数是一种格式化字符串的函数 ,该函数增强了字符串格式化的功能。
基本语法:是通过 {} 来代替以前的 %
(1)不设置指定位置,按默认顺序
案例1:
hz=‘{}{}’.format(“dcs”,‘18’)
print(hz) #dcs18
案例2:
hz1=‘{}’.format(“dcs”,‘18’)
print(hz1) #dcs

2、设置指定索引位置输出 备注:索引从0开始,
案例1:
h=‘{1}{0}’.format(“dcs”,‘18’)
print(h) #18dcs

3、设置参数输出

案例21:
a=“姓名:{name},年龄:{age}”.format(name=“duoceshi”,age=18)
print(a)
多测师肖sir_高级金牌讲师_python之函数007_第26张图片

4、对列表进行格式化
案例1:
list=[1,2]
print(“排名:{0[0]},奖励:{0[1]}”.format(list))
多测师肖sir_高级金牌讲师_python之函数007_第27张图片

案例2:
list4=[“dcs”,“hz”] #列表的索引0
list5=[“1”,“2”] ##列表的索引1
list6=[“3”,“4”] ##列表的索引2
print(“公司:{2[0]},地址:{1[1]}”.format(list4,list5,list6))
备注:大括号里面的0代表的是列表、中括号里面的0和1是列表元素对应的索引位

案例:
list=[1,2]
list1=[3,4]
print(“排名:{0[0]},奖励:{1[1]}”.format(list,list1))
多测师肖sir_高级金牌讲师_python之函数007_第28张图片

5、对字典进行格式化 "**"表示可变长字典
案例1:
s={“name”:“dcs”,“wb”:“huawei”}
hz1=(‘公司名称:{name},外包公司:{wb}’.format(**s))
print(hz1)
案例:

dict1={‘name’:‘zs’,‘age’:‘18’}
gs=(‘姓名:{name},年龄:{age}’).format(**dict1)
print(gs)
多测师肖sir_高级金牌讲师_python之函数007_第29张图片

============================
(2)zip函数
定义:zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成 一个个元组,然后返回由这些元组组成的列表,如果各个迭代器的元素个 数不一致,则返回列表长度与最短的对象相同。
(1)zip压缩
案例1:(将两个列表装换成字典)
list4=[“dcs”,“hz”] #列表的索引0
list5=[“1”,“2”,“3”,“4”] ##列表的索引1
c=zip(list4,list5)
print(type©) #
print© # zip对象
s=dict©
print(s)
多测师肖sir_高级金牌讲师_python之函数007_第30张图片
多测师肖sir_高级金牌讲师_python之函数007_第31张图片

案例2:(将两个列表装换成元组)
list=[1,2,5,6]
list1=[3,4]
c=zip(list,list1)
tuple1=tuple©
print(tuple1)

多测师肖sir_高级金牌讲师_python之函数007_第32张图片

案例2:(将两个列表装换成列表)
list4=[“dcs”,“hz”] #列表的索引0
list5=[“1”,“2”,“3”,“4”] ##列表的索引1
c=zip(list4,list5)
print(type©) #
print© # zip对象
s=list©
print(s)
多测师肖sir_高级金牌讲师_python之函数007_第33张图片

(2)解压
zip(*) zip压缩包
案例1:先压缩在解压
list4=[“dcs”,“hz”] #列表的索引0
list5=[“1”,“2”,“3”,“4”] ##列表的索引1
m,n=zip(*zip(list5,list4))
print(m)
print(n)
多测师肖sir_高级金牌讲师_python之函数007_第34张图片
多测师肖sir_高级金牌讲师_python之函数007_第35张图片

============================

3、open函数

open函数用于打开一个文就拿,创建一个file对象
语法:语法:open(file, mode),模式有
r(只读),
w(写入覆盖),
a(写入追加)

  • 表示 可以同时读写某个文件
    r+ 可读写文件
    w+ 写读
    a+ 同a

多测师肖sir_高级金牌讲师_python之函数007_第36张图片
查看open函数用法:输入open,按住ctrl+鼠标点击open函数
多测师肖sir_高级金牌讲师_python之函数007_第37张图片
查看open 的用法: 鼠标
多测师肖sir_高级金牌讲师_python之函数007_第38张图片

案例1:(read读取文件所有内容)
案例
url=r"C:\Users\Administrator\PycharmProjects\dcshz12\hz1201\cc.py"
f=open(url,“r”,encoding=“utf-8”)
print(f.read()) #读取文件中所有的内容
在读取中解决中文办法:添加encoding=“utf-8”)
多测师肖sir_高级金牌讲师_python之函数007_第39张图片

案例2:(readline读取文件第一行)
url=r"C:\Users\Administrator\PycharmProjects\dcshz12\hz1201\cc.py"
f=open(url,“r”,encoding=“utf-8”)
print(f.readline()) #读取文件中所有的内容
案例3:readlines读取文件中所有的内容,并返回列表的格式
url=r"C:\Users\Administrator\PycharmProjects\dcshz12\hz1201\cc.py"
f=open(url,“r”,encoding=“utf-8”)
print(f.readlines())
多测师肖sir_高级金牌讲师_python之函数007_第40张图片

案例4:读取本地文件
lj=r"D:\cd\abc.txt"
m=open(lj,“r”,encoding=“utf-8”)
print(m.read()) # 读取文章中所有的内容
print(m.readline()) #读取文章中第一行内容 #print(1)
print(s.readlines()) ## 读取文章中所有的内容,返回结果是一个列表
#[‘print(1)\n’, ‘print(“中国”)\n’, ‘a=2\n’, ‘b=3\n’, ‘c=4\n’, ‘\n’, ‘\n’, ‘\n’]

多测师肖sir_高级金牌讲师_python之函数007_第41张图片

二、写 w
案例:写的模式:w(写入覆盖)
url=“D:\dcs\多测师\hz.txt”
f=open(url,“w”)
f.write(“hhh,kkk”)
f.close()
多测师肖sir_高级金牌讲师_python之函数007_第42张图片

三、追加a
案例:追加的模式:a(写入追加)
url=“D:\dcs\多测师\hz.txt”
f=open(url,“a”)
f.write(“2222,1111”)
f.close()
多测师肖sir_高级金牌讲师_python之函数007_第43张图片

四、with open
备注:用with语句的好处,就是到达语句末尾时,会自动关闭文件,即便出现异常
案例:
url=“D:\dcs\多测师\hz.txt”
with open(url,“r”) as f:
a=f.read()
print(a)

多测师肖sir_高级金牌讲师_python之函数007_第44张图片

=======================
拓展:
1、long 函数在python3中已删除
long 将数字或字符转换成一个长整型
2、len
返回一个内容的长度
语法:len(内容)
内容:字符串,列表,字典,元组等
案例1:计算字符串
a=“abcdef”
print(len(a)) #6
案例2:计算列表
b=[1,2,3]
print(len(b)) #3
案例3:计算字典
c={“nmae”:“a”,“sex”:“男”}
print(len©) #2
案例4:计算元组
d=(“a”,“b”,“c”)
print(len(d)) #3
多测师肖sir_高级金牌讲师_python之函数007_第45张图片

3、abs 绝对值
案例:
f=-1
print(abs(f))
4、sum求和
案例:求出1-100的和
print(sum(range(1,101))),
5、id 函数返回对象唯一标识,标识的是一个整数
案例
a=-1
b=[6,4,1,2,3]
print(id(a)) #140719602754128
print(id(b)) #2654254228104

6、print(help(max)) 查看函数用法
7、max函数
案例:
b=[6,4,1,2,3]
print(max(b)) #6
8、min函数
b=[6,4,1,2,3]
print(min(b) #1

多测师肖sir_高级金牌讲师_python之函数007_第46张图片
9、help 函数用于查看函数或模块用途的详细说明
help()
print(help(max)) 显示帮助信息
多测师肖sir_高级金牌讲师_python之函数007_第47张图片
10、int 函数是将一个串或数字转换为整型
a=‘1234’
print(type(a))
b=int(a)
print(type(b)
多测师肖sir_高级金牌讲师_python之函数007_第48张图片
11、str ()函数将对象转化为适于人阅读的方式:返回对象string 格式
多测师肖sir_高级金牌讲师_python之函数007_第49张图片
12、

你可能感兴趣的:(python,python,开发语言)