ホームページ > バックエンド開発 > Python チュートリアル > Python で関数を作成して呼び出すにはどうすればよいですか?

Python で関数を作成して呼び出すにはどうすればよいですか?

WBOY
リリース: 2023-05-08 19:13:06
転載
1400 人が閲覧しました

関数の作成

関数は def ステートメントで作成されます。構文は次のとおりです:

def 函数名(参数列表):  # 具体情况具体对待,参数可有可无
	"""函数说明文档字符串"""
    函数封装的代码
    ……
ログイン後にコピー

タイトル行は def# で構成されます## キーワード、関数の名前、および

def を形成する引数のセット (存在する場合)。句の残りの部分には、オプションですが強く推奨される docstring# が含まれます。 ##、および 必須関数本体

関数名

の命名は、識別子の命名規則に従う必要があります。

は文字、アンダースコア、数字で構成できます
  • 数字で始めることはできません
  • キーワードと同じ名前
  • def washing_machine():  # 洗衣机可以帮我们完成
        print("打水")
        print("洗衣服")
        print("甩干")
    ログイン後にコピー

    関数の呼び出し
関数を呼び出すには、括弧のペア () を使用します。括弧がない場合は、単に関数への参照。

任意の入力パラメータすべてを括弧で囲む必要があります

凡例:

Python で関数を作成して呼び出すにはどうすればよいですか?ケース: 洗剤を追加する

def washing_machine():  # 洗衣机可以帮我们完成
    print("打水")
    print("加洗衣粉!!!")
    print("洗衣服")
    print("甩干")
# 早上洗衣服
washing_machine()
# 中午洗衣服
washing_machine()
# 晚上洗衣服
washing_machine()
ログイン後にコピー

Python で関数を作成して呼び出すにはどうすればよいですか?概要

関数を定義した後これは、この関数がコードの一部をカプセル化することを意味するだけです
  • 関数をアクティブに呼び出さない場合、関数はアクティブに実行されません
  • #思考

関数呼び出し
  • 関数定義

    の上に置いてもいいでしょうか?

    それはできません!
    • 関数名を使用して関数を呼び出す前に、

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

      NameError: the name menu is not generated
    • )
    • 関数のパラメータ

      仮パラメータと実パラメータ

##仮パラメータ

:

定義時

関数では、括弧内のパラメータはパラメータを受け取るために使用されます。関数
    内では、変数
  • 実際のパラメータ :

    関数を呼び出すとき、括弧内のパラメーターは関数内の
  • にデータを渡すために使用されます
  • Question

    他のものを洗浄したい場合は、メソッド内のコードを手動で変更する必要があります:
  • def washing_machine():  # 洗衣机可以帮我们完成
        print("打水")
        print("加洗衣粉!!!")
        print("洗床单")  # 洗被套
        print("甩干")
    ログイン後にコピー
関数内には特定の変更値があります:

def washing_machine():  # 洗衣机可以帮我们完成
    print("打水")
    print("加洗衣粉!!!")
    print("洗衣服")
    print("甩干")
washing_machine()
def washing_machine():  # 洗衣机可以帮我们完成
    print("打水")
    print("加洗衣粉!!!")
    print("洗床单")
    print("甩干")
washing_machine()
......
ログイン後にコピー
Thinking 何が問題ですか?

この関数は固定データのみを処理できます

#それを解決するにはどうすればよいですか?

関数呼び出し時に、処理が必要なデータを関数内に渡すことができれば良いですね!

パラメータを渡す

関数名の後の括弧を埋めます

Parameters

  • その他の使用

    , でパラメータを区切ります

  • 関数を呼び出すとき、実パラメータの数は仮パラメータの数と一致している必要があり、実パラメータが渡されます。パラメータ

    def washing_machine(something):  # 洗衣机可以帮我们完成
        print("打水")
        print("加洗衣粉!!!")
        print("洗" + something)
        print("甩干")
    # 洗衣服
    washing_machine("衣服")
    # 洗床单
    washing_machine("床单")
    ログイン後にコピー

  • 凡例
def washing_machine(xidiji,something):  # 洗衣机可以帮我们完成
    print("打水")
    print("加" + xidiji)
    print("洗衣服" + something)
    print("甩干")
#早上洗衣服
#按照参数位置顺序传递参数的方式叫做位置传参
#使用洗衣机,执行洗衣机内部的逻辑
washing_machine("洗衣液","衣服")#something = 衣服
#中午洗被罩
washing_machine("洗衣粉","被罩")# something = 被罩
#晚上洗床单
washing_machine("五粮液","床单")# something = 床单
ログイン後にコピー

Function

関数は、独立した関数を持つコード ブロックを小さなモジュールに編成し、汎用性を高めるために必要に応じて Python で関数を作成して呼び出すにはどうすればよいですか?

関数のパラメーターを呼び出します。関数とターゲットは同じ データ処理ロジックはより多くのデータに適応できます

    #1.関数内でパラメータを変数として使用して、必要なデータ処理を実行します
  • 2. 関数呼び出し 関数で定義されたパラメータの順序に従って、関数内で処理したいデータをパラメータを通して渡す場合

  • 位置パラメータ
  • と同様ですshell
  • スクリプト、
program 名前とパラメータは、

sys

モジュールの

argv

リストを使用して、位置パラメータの形式で Python プログラム

に渡されます。

凡例デフォルトパラメータ

デフォルトパラメータは、

デフォルト値を宣言するパラメータです。パラメータにはデフォルト値が代入されているため、関数呼び出し時にパラメータに値を渡さなくても構いません

関数の戻り値

Python で関数を作成して呼び出すにはどうすればよいですか?

##プログラム開発では、

#関数を実行する必要がある場合があります。終了後に呼び出し元に結果を通知する

これにより、呼び出し元は特定の結果に対して後続の処理を実行できます

#戻り値

は、作業を完了するための関数

です。
    その後、
  • Finally

    が呼び出し元に result

    を返します。
  • 在函数中使用 return 关键字可以返回结果

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

案例:计算任意两个数字的和

# 函数的返回值: return, 用于对后续逻辑的处理
# 理解: 把结果揣兜里,后续想干啥干啥,想打印打印,想求和就求和
# 注意:
# a. 函数中如果没有return,那么解释器会自动加一个return None
# b. return表示函数的终止,return后的代码都不会执行
# 1 定义一个函数,计算两个数的和
# 2 计算这两个数的和是不是偶数
def get_sum(x, y=100):  # 默认参数
    he = x + y  # sum = 10 + 20
    return he   # return 30
    print("return表示函数的终止,return后的代码都不会执行")
# 将函数return后的结果赋值给变量dc: dc = sum  ->  dc = 30
dc = get_sum(10, 20)  # x = 10, y = 20
print("dc:", dc)  # 30
dc1 = get_sum(10)  # x = 10, y = 100
print("dc1:", dc1)  # 110
# if dc % 2 == 0:
#     print("偶数")
# else:
#     print("奇数")
ログイン後にコピー
#默认参数
#注意:具有默认值的参数后面不能跟没有默认值的参数
def get_sum(a=20,b=5,c=10):
    he = a + b+ c
    return he
 
dc = get_sum(1,2,3) #a=1 b=2 c=3
print("dc:",dc) # 6
dc1 = get_sum(1,2)  # a=1 b=2 c=10
print("dc1:",dc1) # 13
dc2 = get_sum(1)  # a=1 b=5 c=10
print("dc2:",dc2) # 16
dc3 = get_sum()
print("dc3:",dc3) # 35
ログイン後にコピー

Python で関数を作成して呼び出すにはどうすればよいですか?

修改菲波那切数列

def new_fib(n=8):
    list01 = [0,1]  #定义列表,指定初始值
    for dc in range(n-2):
        list01.append(list01[-1]+list01[-2])
    return list01
 
dc = new_fib()   #不加参数默认是8
dc1 = new_fib(10)
print("dc:",dc)
print("dc1:",dc1)
ログイン後にコピー

Python で関数を作成して呼び出すにはどうすればよいですか?

生成随机密码:

#练习:生成随机密码
#创建 randpass.py 脚本,要求如下:
#编写一个能生成8位随机密码的程序
#使用 random 的 choice 函数随机取出字符
#由用户决定密码长度
import random
def new_password():
    n = int(input("密码长度:"))
    password = ""
    all = "0123456789zxcvbnmlkjhgfdsaqwertyuiopPOIUYTREWQASDFGHJKLMNBVCXZ" # 0-9 a-z A-Z
    random.choice(all)
    for i in range(n):
        dc = random.choice(all)
        password += dc
    # print("passwd:",password)
    return password
# 调用函数,才能执行函数内部逻辑
dc = new_password()
print("dc:",dc)
ログイン後にコピー

Python で関数を作成して呼び出すにはどうすればよいですか?

#练习:生成随机密码
#创建 randpass.py 脚本,要求如下:
#编写一个能生成8位随机密码的程序
#使用 random 的 choice 函数随机取出字符
#由用户决定密码长度
import random,string
def new_password():
    n = int(input("密码长度:"))
    password = ""
    all = string.ascii_letters + string.digits
    random.choice(all)
    for i in range(n):
        dc = random.choice(all)
        password += dc
    # print("passwd:",password)
    return password
# 调用函数,才能执行函数内部逻辑
dc = new_password()
print("dc:",dc)
ログイン後にコピー

Python で関数を作成して呼び出すにはどうすればよいですか?

模块基础

定义模块

基本概念
  • 模块是从逻辑上组织python代码的形式

  • 当代码量变得相当大的时候,最好把代码分成一些有组织的代码段,前提是保证它们的 彼此交互

  • 这些代码片段相互间有一定的联系,可能是一个包含数据成员和方法的类,也可能是一组相关但彼此独立的操作函数

导入模块 (import)

  • 使用 import 导入模块

  • 模块属性通过 “模块名.属性” 的方法调用

  • 如果仅需要模块中的某些属性,也可以单独导入

为什么需要导入模块?

可以提升开发效率,简化代码

Python で関数を作成して呼び出すにはどうすればよいですか?

正确使用

# test.py,将 file_copy.py 放在同级目录下
# 需求:要将/etc/passwd复制到/tmp/passwd
src_path = "/etc/passwd"
dst_path = "/tmp/passwd"
# 如何复制?
# 调用已有模块中的方法
#    - 很推荐,简单粗暴不动脑
#    - 直接使用 file_copy.py的方法即可
 
# 导入方法一:直接导入模块
import file_copy  # 要注意路径问题
file_copy.copy(src_path, dst_path)
 
# 导入方法二:只导入 file_copy 模块的 copy 方法
from file_copy import copy  # 如果相同时导入多个模块 from file_copy import *
copy(src_path, dst_path)
 
# 导入方法四:导入模块起别名 as
import file_copy as fc
fc.copy(src_path, dst_path)
ログイン後にコピー

常用的导入模块的方法

  • 一行指导入一个模块,可以导入多行, 例如:import random

  • 只导入模块中的某些方法,例如:from random import choice, randint

模块加载 (load)

  • 一个模块只被 加载一次,无论它被导入多少次

  • 只加载一次可以 阻止多重导入时,代码被多次执行

  • 如果两个文件相互导入,防止了无限的相互加载

  • 模块加载时,顶层代码会自动执行,所以只将函数放入模块的顶层是最好的编程习惯

模块特性及案例

模块特性

模块在被导入时,会先完整的执行一次模块中的 所有程序

案例

# foo.py
print(__name__)
 
# bar.py
import foo  # 导入foo.py,会将 foo.py 中的代码完成的执行一次,所以会执行 foo 中的 print(__name__)
ログイン後にコピー

结果:

# foo.py -> __main__ 当模块文件直接执行时,__name__的值为‘__main__’
# bar.py -> foo 当模块被另一个文件导入时,__name__的值就是该模块的名字

Python で関数を作成して呼び出すにはどうすればよいですか?

所以我们以后在 Python 模块中执行代码的标准格式:

def test():
    ......
if __name__ == "__main__":
    test()
ログイン後にコピー

以上がPython で関数を作成して呼び出すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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