ホームページ > バックエンド開発 > Python チュートリアル > Python 関数の基本概念は何ですか?

Python 関数の基本概念は何ですか?

王林
リリース: 2023-05-09 23:43:06
転載
1202 人が閲覧しました

01. 関数の簡単な体験

1.1 簡単な体験

  • いわゆる 関数は、コード ブロックと独立した関数 必要に応じて小さなモジュールに編成 Call

  • 関数の使用には 2 つのステップが含まれます:

  1. 関数を定義する——カプセル化独立した関数

  2. 関数を呼び出す——カプセル化の結果を楽しむ

  • 関数の役割 プログラム開発時に関数を使用すると、記述の効率が向上し、コードの再利用##が可能になります。

#ウォークスルー ステップ

  1. New

    04_Function プロジェクト

  2. 以前に完了した

    乗算表をコピーしますfile

  3. ファイルを変更して関数定義を追加します

    multiple_table():

  4. 別のファイルを作成し、

    import を使用して関数をインポートし、関数

#02 を呼び出します。基本的な関数の使用法

2.1関数定義

関数の定義形式は以下のとおりです。

def 函数名():
ログイン後にコピー
  1. def は英語の define# の略です。

  2. 関数名

    は、後続の呼び出しを容易にするために、関数カプセル化コードの機能を表現できる必要があります

  3. 関数名

    の命名は、 識別子の命名規則に準拠する必要があります

# 文字
  • アンダースコア

    および 数字 の形式で構成できます。

    数字で始めることはできません
  • #キーワードと同じ名前は使用できません

  • ##2.2 関数呼び出し関数の呼び出しこれは非常に簡単で、

    function name()
  • 関数の呼び出しを完了します

2.3 最初の関数ウォークスルー

要件

挨拶を書くsay_hello の関数は、挨拶する 3 行のコードをカプセル化します。

  1. 挨拶するコードを関数の下に呼び出します

    name = "小明"
    
    
    # 解释器知道这里定义了一个函数
    def say_hello():
        print("hello 1")
        print("hello 2")
        print("hello 3")
    
    print(name)
    # 只有在调用函数时,之前定义的函数才会被执行
    # 函数执行完成之后,会重新回到之前的程序中,继续执行后续的代码
    say_hello()
    
    print(name)
    ログイン後にコピー
  2. 使用

    F8 と F7 のシングルステップ実行

    次のコードの実行プロセスを観察します

関数を定義した後は、この関数がコードの一部をカプセル化することを意味するだけです。

    関数がアクティブに呼び出されない場合、関数はアクティブに実行されません。
  • 関数定義

    の上にある

    関数呼び出し
  • が可能かどうか考えてください。
  • #それはできません!

    関数名を使用して関数を呼び出す前に、Python

    が関数の存在を既に認識していることを確認する必要があります
  • それ以外の場合は、コンソールにプロンプ​​トが表示されます。

    NameError: name 'say_hello' is not registered

    (
  • Name error: the namesay_hello is not generated
  • )

    2.4 PyCharm のデバッグ ツール

  • #F8 ステップ オーバーコードをステップごとに実行でき、関数呼び出しが考慮されます。コード行として直接実行

  • F7 Step Into
コードを 1 ステップで実行できます。関数の場合は、内部に入ります。関数

  • 2.5 関数ドキュメントのコメント

    開発中に関数にコメントを追加する場合は、
  • three を使用する必要があります。連続する引用符のペア
  • # 以下 関数の定義

##連続する 3 つの引用符のペアの間に関数の説明を記述します

  • # 関数呼び出し の位置で、ショートカット キー CTRL Q を使用して、関数の説明情報を表示します

  • ##注:

    関数本体は比較的独立しているため、関数定義

    の上には、他のコード (コメントを含む) を含む
  • 2 つの空白行を保持する必要があります。 )
  • 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()
    ログイン後にコピー

    思考一下存在什么问题

    函数只能处理 固定数值 的相加

    如何解决?

    • 如果能够把需要计算的数字,在调用函数时,传递到函数内部就好了!

    3.1 函数参数的使用

    • 在函数名的后面的小括号内部填写参数

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

    def sum_2_num(num1, num2):
    
        result = num1 + num2
        
        print("%d + %d = %d" % (num1, num2, result))
    
    sum_2_num(50, 20)
    ログイン後にコピー

    3.2 参数的作用

    • 函数,把具有独立功能的代码块组织为一个小模块,在需要的时候调用

    • 函数的参数,增加函数的通用性,针对相同的数据处理逻辑,能够适应更多的数据

    1. 在函数内部,把参数当做变量使用,进行需要的数据处理

    2. 函数调用时,按照函数定义的参数顺序,把希望在函数内部处理的数据通过参数传递

    3.3 形参和实参

    • 形参定义函数时,小括号中的参数,是用来接收参数用的,在函数内部作为变量使用

    • 实参调用函数时,小括号中的参数,是用来把数据传递到函数内部用的

    04. 函数的返回值

    • 在程序开发中,有时候,会希望一个函数执行结束后,告诉调用者一个结果,以便调用者针对具体的结果做后续的处理

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

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

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

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

    def sum_2_num(num1, num2):
        """对两个数字的求和"""
    
        return num1 + num2
    
    # 调用函数,并使用 result 变量接收计算结果
    result = sum_2_num(10, 20)
    
    print("计算结果是 %d" % result)
    ログイン後にコピー

    05. 函数的嵌套调用

    • 一个函数里面又调用另外一个函数,这就是函数嵌套调用

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

    • 那么执行到调用test1 函数时,会先把函数test1 中的任务都执行完

    • 才会回到test2 中调用函数test1 的位置,继续执行后续的代码

    def test1():
    
        print("*" * 50)
        print("test 1")
        print("*" * 50)
    
    
    def test2():
    
        print("-" * 50)
        print("test 2")
        
        test1()
        
        print("-" * 50)
    
    test2()
    ログイン後にコピー

    函数嵌套的演练 —— 打印分隔线

    体会一下工作中 需求是多变

    需求 1

    • 定义一个print_line 函数能够打印* 组成的一条分隔线

    def print_line(char):
    
        print("*" * 50)
    ログイン後にコピー

    需求 2

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

    def print_line(char):
    
        print(char * 50)
    ログイン後にコピー

    需求 3

    • 定义一个函数能够打印任意重复次数的分隔线

    def print_line(char, times):
    
        print(char * times)
    ログイン後にコピー

    需求 4

    • 定义一个函数能够打印5 行的分隔线,分隔线要求符合需求 3

    提示:工作中针对需求的变化,应该冷静思考,不要轻易修改之前已经完成的,能够正常执行的函数

    def print_line(char, times):
    
        print(char * times)
    
    
    def print_lines(char, times):
    
        row = 0
        
        while row < 5:
            print_line(char, times)
    
            row += 1
    ログイン後にコピー

    06. 使用模块中的函数

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

    • 模块就好比是工具包,要想使用这个工具包中的工具,就需要导入 import这个模块

    • 每一个以扩展名py 结尾的Python 源代码文件都是一个模块

    • 在模块中定义的全局变量函数都是模块能够提供给外界直接使用的工具

    6.1 第一个模块体验

    步骤

    • 新建hm_10_分隔线模块.py

    • 复制hm_09_打印多条分隔线.py 中的内容,最后一行 <strong>print</strong> 代码除外

    • 增加一个字符串变量

    name = "黑马程序员"
    ログイン後にコピー
    • 新建hm_10_体验模块.py 文件,并且编写以下代码:

    import hm_10_分隔线模块
    
    hm_10_分隔线模块.print_line("-", 80)
    print(hm_10_分隔线模块.name)
    ログイン後にコピー
    体验小结
    • 可以在一个 Python 文件定义 变量 或者 函数

    • 然后在另外一个文件中使用import 导入这个模块

    • 导入之后,就可以使用模块名.变量 /模块名.函数 的方式,使用这个模块中定义的变量或者函数

    模块可以让 曾经编写过的代码 方便的被 复用

    6.2 模块名也是一个标识符

    • 标示符可以由字母下划线数字组成

    • 不能以数字开头

    • 不能与关键字重名

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

    6.3 Pyc 文件(了解)

    Ccompiled 编译过 的意思

    操作步骤

    1. 浏览程序目录会发现一个__pycache__ 的目录

    2. 目录下会有一个hm_10_分隔线模块.cpython-35.pyc 文件,cpython-35 表示Python 解释器的版本

    3. 这个pyc 文件是由 Python 解释器将模块的源码转换为字节码

    • Python 这样保存字节码是作为一种启动速度的优化

    字节码

    • Python 在解释源程序时是分成两个步骤的

    1. 首先处理源代码,编译生成一个二进制字节码

    2. 再对字节码进行处理,才会生成 CPU 能够识别的机器码

    • モジュールのバイトコード ファイルを取得した後、次回プログラムを実行するときに、最後にファイルを保存してからソースが変更されていない場合、 bytecode コードの場合、Python は .pyc ファイルをロードし、コンパイル ステップをスキップします。

    • Python が再コンパイルされると、ソース ファイルとバイトコード ファイルが自動的にチェックされます。タイムスタンプ

    • ソース コードを再度変更すると、次回プログラムを実行するときにバイトコードが自動的に再作成されます

    ##ヒント: モジュールおよびモジュールのその他のインポート方法については、後続のコースが徐々に拡張されます。

    モジュールは Python プログラム アーキテクチャの中核概念です

以上がPython 関数の基本概念は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:yisu.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート