zoukankan      html  css  js  c++  java
  • python基础(八、函数基础)

    12.函数基础
    1)函数的快速体验
    (1)快速体验
    所谓函数,就是把具有独立功能的代码块组织为一个小模块,在需要的时候调用
    函数的使用包含两个步骤:
    ①定义函数 — 封装独立的功能
    ②调用函数 — 享受封装的成果
    函数的作用,在开发程序时,使用函数可以提高编写的效率以及代码的重用

    (2)演练步骤
    ①新建“04_函数”项目

    ②复制之前完成的乘法表文件到“04_函数”文件夹中

    ③增加函数定义“multiple_table():”(第一行顶格),修改文件(调整缩进)

    ④新建另外一个文件,使用 import 导入并且调用函数

    ⑤右击新建的文件,运行即可打印九九乘法表

    2)函数基本使用
    (1)函数的定义
    定义函数的格式如下:
    def 函数名():
    函数封装的代码
    ……
    def是英文define的缩写
    函数名称应该能够表达函数封装代码的功能,方便后续的调用
    函数名称的命名应该符合标识符的命名规则:
    ①可以由字母、下划线和数字组成
    ②不能以数字开头
    ③不能与关键字重名

    (2)函数调用
    调用函数很简单的,通过函数名()即可完成对函数的调用

    (3)第一个函数演练
    ①需求
    (a)编写一个打招呼 say_hello 的函数,封装三行打招呼的代码
    (b)在函数下方调用打招呼的代码
    ②代码
    用单步执行F8和F7观察以下代码的执行过程

    定义好函数之后,只表示这个函数封装了一段代码而已
    如果不主动调用函数,函数是不会主动执行的
    ③思考
    能否将函数调用放在函数定义的上方?
    不能!
    因为在使用函数名调用函数之前,必须要保证Python已经知道函数的存在。否则控制台会提示:
    NameError: name 'say_hello' is not defined (名称错误:say_hello 这个名字没有被定义)

    (4)PyCharm 的调试工具
    ①F8 Step Over 可以单步执行代码,会把函数调用看作是一行代码直接执行
    ②F7 Step Into 可以单步执行代码,遇到函数调用,会进入函数内部单步执行

    (5)函数的文档注释
    ①在开发中,如果希望给函数添加注释,应该在定义函数的下方,使用连续的三对引号。在连续的三对引号之间编写对函数的说明文字。
    ②在函数调用位置,使用快捷键CTRL + Q可以查看函数的说明信息

    注意:因为函数体相对比较独立,函数定义的上方和下方,应该和其他代码保留两个空行

    3)函数的参数
    (1)函数参数的引入
    ①演练需求
    (a)开发一个sum_2_num的函数
    (b)函数能够实现两个数字的求和功能
    ②代码

    ③思考一下存在什么问题
    函数只能处理固定数值的相加
    如果能够把需要计算的数字,在调用函数时,传递到函数内部就好了!

    (2)函数参数的使用
    在函数名的后面的小括号内部填写参数
    多个参数之间使用“,”分隔
    修改代码

    (3)参数的作用
    函数,把具有独立功能的代码块组织为一个小模块,在需要的时候调用。
    函数的参数,增加函数的通用性,针对相同的数据处理逻辑,能够适应更多的数据
    ①在函数内部,把参数当做变量使用,进行需要的数据处理
    ②函数调用时,按照函数定义的参数顺序,把希望在函数内部处理的数据,通过参数传递

    (4)形参和实参
    形参:定义函数时,小括号中的参数,是用来接收参数用的,在函数内部作为变量使用
    实参:调用函数时,小括号中的参数,是用来把数据传递到函数内部用的

    4)函数的返回值
    返回值是函数完成工作后,最后给调用者的一个结果。
    在函数中使用return关键字可以返回结果。
    调用函数一方,可以使用变量来接收函数的返回结果。
    (1)函数不写return,返回值为None
    (2)函数写了return,但return后面没有值,返回值为None。
    (3)函数写了return,且return后面只有一个值,返回一个值。
    (4)函数写了return,且return后面只有多个值(值1,值2,值3),返回元组。
    注意:return表示返回,后续的代码都不会被执行

    5)函数的嵌套调用
    (1)函数嵌套的概念
    一个函数里面又调用了另外一个函数,这就是函数嵌套调用

    (2)函数嵌套演练:打印分隔线
    ①需求1:定义一个 print_line 函数能够打印 * 组成的 一条分隔线

    ②需求2:定义一个函数能够打印 由任意字符组成 的分隔线

    ③需求3:定义一个函数能够打印 任意重复次数 的分隔线

    ④4)需求4:定义一个函数能够打印 5 行 的分隔线,分隔线要求符合需求 3
    提示:工作中针对需求的变化,应该冷静思考,不要轻易修改之前已经完成的,能够正常执行的函数!

    12.5.3 函数嵌套演练:a的作用域
    nonlocal:可以一层一层的往外找到最近的局部变量,但找到最外层的局部变量还没有时会报错,而且不会找到全局变量。

    执行结果:

    6)给函数添加注释
    (1)方法一:


    (2)方法二:

    7)使用模块中的函数(重点)
    模块是Python程序架构的一个核心概念
    模块就好比是工具包,要想使用这个工具包中的工具,就需要导入import这个模块
    每一个以扩展名py结尾的Python源代码文件都是一个模块
    在模块中定义的全局变量、函数都是模块能够提供给外界直接使用的工具

    (1)第一个模块体验
    ①步骤
    (a)新建 hm_10_分隔线模块.py
    (b)复制 hm_09_打印多条分隔线.py 中的内容,最后一行 print 代码除外
    (c)增加一个字符串变量: name = "黑马程序员"

    (d)新建 hm_10_体验模块.py 文件,并且编写以下代码:

    ②体验小结:
    a)可以在一个 Python 文件中定义变量或者函数
    b)然后在另外一个文件中使用import导入这个模块
    c)导入之后,就可以使用“模块名.变量”或“模块名.函数”的方式,使用这个模块中定义的变量或者函数
    d)模块可以让曾经编写过的代码方便的被复用!

    (2)模块名也是一个标识符
    标示符可以由字母、下划线和数字组成,
    不能以数字开头,
    不能与关键字重名
    注意:如果在给 Python文件起名时,以数字开头是无法在PyCharm中通过导入这个模块的

    (3)pyc文件(字节码文件)
    c是compiled编译过的意思
    ①操作步骤
    (a)浏览程序目录会发现一个“pycache” 的目录
    (b)目录下会有一个“hm_10_分隔线模块.cpython-35.pyc”文件,cpython-35表示Python解释器的版本(C语言编写的35版)
    (c)这个pyc文件是由Python解释器将模块的源码转换为字节码,Python这样保存字节码是作为一种启动速度的优化
    ②字节码
    Python在解释源程序时是分成两个步骤的:
    (a)首先处理源代码,编译生成一个二进制字节码
    (b)再对字节码进行处理,才会生成CPU能够识别的机器码
    有了模块的字节码文件之后,下一次运行程序时,如果在上次保存字节码之后没有修改过源代码,Python将会加载 .pyc 文件并跳过编译这个步骤。
    当Python重编译时,它会自动检查源文件和字节码文件的时间戳。如果你又修改了源代码,下次程序运行时,字节码将自动重新创建。
    模块是 Python 程序架构的一个核心概念

    ①②③④⑤⑥⑦⑧⑨⑩

  • 相关阅读:
    第十二周学习进度条
    寻找水王
    第十一周进度条
    第十周进度条
    构建之法阅读笔记(二)
    第九周学习进度
    团队名字
    站立会议09
    站立会议08
    站立会议07
  • 原文地址:https://www.cnblogs.com/bdzxh/p/14060190.html
Copyright © 2011-2022 走看看