6 函数

函数

  • 函数的快速体验
  • 函数的基本使用
  • 函数的参数
  • 函数的返回值
  • 函数的嵌套调用
  • 在模块中定义函数
01.函数快速体验
  • 所谓函数,就是把具有独立功能的代码块组织为一个小模块,在需要的时候调用
  • 函数的使用包含两个步骤
    • 定义函数 - - 封装独立的功能
    • 调用函数 - - 享受封装的成果
  • 函数的作用 ,在开发程序时,使用函数可以提高编写的效率以及代码的重用
def multiple_table():
    row = 1
    while row <=9:
        col =1
        while col <=row:
            print("%d x %d = %d" %(col,row,col * row), end="\t")
            col += 1
        print("")
        row += 1

print("调用函数打印出乘法表")
multiple_table()

调用函数打印出乘法表
1 x 1 = 1	
1 x 2 = 2	2 x 2 = 4	
1 x 3 = 3	2 x 3 = 6	3 x 3 = 9	
1 x 4 = 4	2 x 4 = 8	3 x 4 = 12	4 x 4 = 16	
1 x 5 = 5	2 x 5 = 10	3 x 5 = 15	4 x 5 = 20	5 x 5 = 25	
1 x 6 = 6	2 x 6 = 12	3 x 6 = 18	4 x 6 = 24	5 x 6 = 30	6 x 6 = 36	
1 x 7 = 7	2 x 7 = 14	3 x 7 = 21	4 x 7 = 28	5 x 7 = 35	6 x 7 = 42	7 x 7 = 49	
1 x 8 = 8	2 x 8 = 16	3 x 8 = 24	4 x 8 = 32	5 x 8 = 40	6 x 8 = 48	7 x 8 = 56	8 x 8 = 64	
1 x 9 = 9	2 x 9 = 18	3 x 9 = 27	4 x 9 = 36	5 x 9 = 45	6 x 9 = 54	7 x 9 = 63	8 x 9 = 72	9 x 9 = 81	
02.函数的定义
def 函数名():
    函数封装的代码
    ......
  1. def 是英文 define 的缩写
  2. 函数名称应该能够表达函数封装代码的功能,方便后续的调用
  3. 函数名称的命名应该符合标识符的命名规则
    • 可以由字母、下划线和数字组成
    • 不能以数字开头
    • 不能与关键字重名
def multiple_table():
    row = 1
    while row <=9:
        col =1
        while col <=row:
            print("%d x %d = %d" %(col,row,col * row), end="\t")
            col += 1
        print("")
        row += 1

print("调用函数打印出乘法表")
multiple_table()
函数的调用

通过函数名() 即可完成对函数的调用

第一个函数体验

需求:

  • 编写一个打招呼 say_hello 的函数,封装三行打招呼的代码
  • 在函数下方调用打招呼的代码
def say_hello():
    print("hello1")
    print("hello2")
    print("hello3")
say_hello()
## 注意:定义好函数之后,只表示这个函数封装了一段代码而已,如果不主动调用函数,函数是不会执行的。
函数的文档注释
  • 在开发中,如果希望给函数添加注释,应该在定义函数的下方,使用连续的三对引号
  • 在连续的三对引号之间编写对函数的说明文字
  • 在函数调用位置,使用快捷键ctrl + Q 可以查看函数的说明信息

注意:因为函数体相对比较独立,函数定义的上方,应该和其他代码(包括注释)保留两个空行,调用函数的代码与函数体保留两个空行

格式:

# 注释信息或者其他代码


def say_hello():
    """打招呼"""
    print("hello1")
    print("hello2")
    print("hello3")


say_hello()
03 函数的参数

演练需求

  1. 开发一个 sum_2_num 的函数
  2. 函数能够实现两个数字的求和功能

演练代码如下:

def sum_2_num():
    num1 = 10
    num2 = 20
    result = num1 + num2
    print("%d + %d = %d" % (num1,num2,result))


sum_2_num()

上面代码存在一个问题就是只能实现两个固定数字的求和

如何解决:

  • 如果能够把需要计算的数字,在调用函数时,传递到函数内部就好了!
函数参数的使用
  • 在函数名的后面的小括号内部填写参数

  • 多个参数之间使用 , 分割

    def sum_2_num(num1, num2):
        """对两个数字求和"""
      result = num1 + num2
        print("%d + %d = %d" % (num1, num2, result))
    
    
    sum_2_num(10, 20)
    
形参和实参
  • 形参:定义函数时,小括号中的参数,是用来接收参数用的,在函数内部作为变量使用
  • 实参:调用函数时,小括号中的参数,是用来把数据传递到函数内部中用的
04 参数的返回值
  • 程序开发中,有时候,会希望一个函数执行结束后,告诉调用者一个结果,以便调用者对具体结果做后续处理

  • 返回值是函数完成工作后,最后给调用者的一个结果

  • 在函数中使用 return 关键字可以返回结果

  • 调用函数一方,可以使用变量来接收函数的返回结果

    注意:return 表示返回,后续的代码都不回被执行

def sum_2_num(num1, num2):
    """对两个数字求和"""
    result = num1 + num2
    return result   # 注意:return下方不应该增加代码!


sum_result = sum_2_num(20, 20)
print("计算结果 %d" % sum_result) 
05 函数的嵌套调用
  • 一个函数里面有调用了另一个函数,这就是函数嵌套调用

  • 如果函数 test2 中,调用了另外一个函数 test1

    • 那么执行到调用 test1 函数是,就会先把函数 test1 中的任务都执行完
    • 才会回到 test2 中调用函数 test1 的位置,继续执行后续的代码
    def test1():
        print("*" * 20)
    
    def test2():
        print("-" * 20)
        test1()
        print("+" * 20)
    
    test2()
    
    输出:
    --------------------
    ********************
    ++++++++++++++++++++
    

函数嵌套演练-- 打印分割线

需求1:

  • 定义一个print_line 函数能够打印任意字符组成的一条分割线

    def print_line(char):
        print(char * 20)
    
    
    print_line("-")			# ‘-’可以改为任意字符
    

需求2:

  • 要求 print_line 函数能都打印 任意字符任意的重复次数 组成的一天分割线
def print_line(char, times):
    print(char * times)


print_line("7", 20)

需求3:

  • 定义一个函数能够打印 5 条分割线,并且要满足于任意字符字符的重复次数 组成
def print_line(char, times):
    print(char * times)


def print_line2(char, times):
    line = 0
    while line < 5:
        print_line(char, times)
        line += 1


print_line2("-", 20)


输出:
--------------------
--------------------
--------------------
--------------------
--------------------
06 使用模块中的函数

模块是 Python 程序架构的一个核心概念

  • 模块就好比是工具包,要想使用这个工具包中的工具,就需要导入 import 这个模块
  • 每一个以扩展名 py 结尾的 python 源代码文件都是一个模块
  • 在模块定义的全局变量、函数都是模块能够提供给外界直接使用的工具
第一个模块体验
  1. 新建 分割线模块.py 文件,将上面分割线演练的代码复制到里面

  2. def print_line(char, times):
        """打印分割线
        :param char:字符
        :param times:字符重复的次数
        """
        print(char * times)
    
    
    def print_line2(char, times):
        line = 0
        while line < 5:
            print_line(char, times)
            line += 1
            
            
    name = "分割线模块"
    
  3. 新建一个 分割线调用.py 的文件来调用上面的分割线模块

  4. import 分割线模块	## 先导入模块
    
    分割线模块.print_line2("-", 5)		## 调用模块的print_line2函数
    
    print(分割线模块.name)				## 调用模块中的name变量
    
    输出:
    -----
    -----
    -----
    -----
    -----
    分割线模块
    

体验小结:

  • 可以在一个Python文件中定义函数和变量
  • 然后在另一个文件中,使用 import 导入这个模块
  • 导入之后,就可以使用 模块名.变量 模块名.函数 的方式,使用模块中定义的函数或者变量
  • 模块可以让曾经写过的代码 方便的被 复用
模块名和标识符

模块名也是一个标识符

  • 标识符可以由字母、下划线和数字组成
  • 不能以数字开头
  • 不能与关键字重名

注意:现在如果给Python文件起名的时候,以数字开头是无法在pycharm中导入这个模块的

Pyc文件

Ccomplied 编译过的意思

  1. 浏览程序目录会发现一个,_pycache_ 的目录
  2. 目录下会有 cpython-37.pyc 结尾的文件,cpython-37 表示解释器的版本
  3. 这个 pyc 文件是有 python 解释器将模块的源码编译成了二进制文件,转换为字节码
    • Python 这样保存字节码是作为一种启动速度的优化
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值