DAY09、函数

一、函数的定义:跟变量名的定义大同小异

1、声明函数的关键词:def

2、函数(变量)名:fn

3、参数列表:()   参数个数可以为0到n个,但()一定不能丢

4、函数体:实现函数功能的具体代码

5、函数的返回值:return

        例:def fn(moeny):

                   print('付了%s钱'%money)

                    print('函数的一行代码')

                    return'冰红茶'

               print(fn,id(fn))                     #fn直接打印,只能看到函数存放代码的地址

二、使用函数:函数名()

          fn(10)

        函数的返回值也称之为函数值,就是函数执行之后得到的结果

        可以用变量接受(msg = fn(10))、可以直接打印(print(fn(10)))、可以直接使用

         函数执行的本质:执行函数体,得到函数返回值

三、从函数体进行分类:

重点:先定义后调用

1、空函数:项目之初,知道项目有哪些功能,但还没有明确功能体,可以用pass进行函数体填充

              例:   def  computed():

                               pass

2、非空函数:用函数体

              例: def add_num(n1,n2):

                           return n1 + n2

                      res = add_num(10,20)

                      print(res)                        #  30

四、从参数列表进行分类:

1、无参函数:函数体运行不需要外界提供参数

     例:def print_msg():

                  print('welcome')

            print_msg()

2、有参函数:函数体运行需要外界提供参数

     例:  def print_school_msg(p1,p2):

                     print('welcome %s and %s'%(p1,p2))

             p1 = input('输入名字:')

              p2 = input('输入名字')         

              print_school_msg(p1,p2)

五、从返回值进行分类:

空返回:

1、没有return的函数:

     例: def fn1():

                  print('fn1 run!!!')

              res = fn1()

              print('没有return的返回值:%s',%res)      #None

2、空return

     例:   def fn2():

                    print('fn2  run!!!')

                    return

               ren = fn2()

               print('空return的返回值,%s'%res)          #None

注:没有return函数和空return函数的区别:

      空return:可以根据具体情况主动退出函数(像break一样结束循环)

值返回:

1、返回一个值:

     例: def add_num(n1,n2):

                     return n1+ n2

             print(add_num(10+15))          #25

           

            

         def computed(n1, n2):
# 返回四则运算的结果
r1 = n1 + n2
r2 = n1 - n2
r3 = n1 / n2
r4 = n1 * n2
return [r1, r2, r3, r4]
a,b,c,d = computed(10,20)
print(a,b,c,d)

2、返回多个值:本质就是返回装有多个值得元组

     def computed_sup(n1, n2):

    # 返回四则运算的结果
r1 = n1 + n2
r2 = n1 - n2
r3 = n1 // n2
r4 = n1 ** n2
return r1, r2, r3, r4
a, b, c, d = computed_sup(50, 25)
print(a, b, c, d)
res = computed_sup(10,20)
print(res) #得到的是装有所有结果的元组

六、函数的嵌套使用:在一个函数体中调用另一个函数

      注:在解释过程中,不执行函数体,在函数被调用时,函数体才被执行

def max_2(n1, n2):
if n1 > n2:
return n1
return n2 #比较两个数的大小
 
def max_3(n1, n2, n3):
m2 = max_2(n1, n2)
return max_2(m2, n3) #比较三个数的大小
 
def max_4(n1, n2, n3, n4):
m2 = max_2(n1, n2)
return max_3(m2, n3, n4) #比较四个数的大小
七、应用场景:
指定文件名的文件复制:
def copy_file(source, target):
'''
:param source: 被复制的文件
:param target: 复制得到的文件
:return: #函数体的注释
'''
with open(source, 'rb') as r, open(target, 'wb') as w:
for line in r:
w.write(line)
copy_file('被复制的文件','复制得到的文件')

八、了解:脚本文件的执行
import sys
# 存放当前文件作为脚本文件执行的参数们:['当前文件的绝对路径', 手动传入的参数们]
# 脚本文件执行:直接用python解释器运行该文件
print(sys.argv)
# D:\fullstack_s4\day09\代码\0.复习.py

length = len(sys.argv)
if length > 1:
print("有指令传入")
cmd = sys.argv[1]
if cmd == '1':
print("新建文件")
# f = open('cmd.txt', 'w', encoding='utf-8')
# f.close()
with open(r'D:\fullstack_s4\day09\代码\cmd.txt', 'w', encoding='utf-8') as f:
pass
elif cmd == '2':
print("书写文件")
with open(r'D:\fullstack_s4\day09\代码\cmd.txt', 'w', encoding='utf-8') as f:
f.write("写入内容")
else:
print("指令有误")
else:
print("没有指令传入")
 

 

  

                     

                      

   

                            

猜你喜欢

转载自www.cnblogs.com/yanminggang/p/10615370.html