>백엔드 개발 >파이썬 튜토리얼 >Python에서 함수를 만들고 호출하는 방법은 무엇입니까?

Python에서 함수를 만들고 호출하는 방법은 무엇입니까?

WBOY
WBOY앞으로
2023-05-08 19:13:061381검색

함수 만들기

함수는 def 문을 사용하여 생성됩니다. 구문은 다음과 같습니다. def 语句创建,语法如下:

def 函数名(参数列表):  # 具体情况具体对待,参数可有可无
	"""函数说明文档字符串"""
    函数封装的代码
    ……

标题行由 def 关键字,函数的名字,以及参数的集合(如果有的话)组成

def 子句的剩余部分包括了一个虽然可选但是强烈推荐的文档字串,和必需的函数体

函数名称 的命名应该 符合 标识符的命名规则

  • 可以由 字母、下划线 和 数字 组成

  • 不能以数字开头

  • 不能与关键字重名

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 defined (名称错误:menu 这个名字没有被定义)

函数的参数

形参和实参 

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

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

问题

当我们想洗其他的东西,要手动改方法内部的代码:

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()
......

思考一下存在什么问题

函数只能处理固定的数据

如何解决?

如果能够把需要处理的数据,在调用函数时,传递到函数内部就好了!

传递参数

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

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

  • 调用函数时,实参的个数需要与形参个数一致,实参将依次传递给形参

def washing_machine(something):  # 洗衣机可以帮我们完成
    print("打水")
    print("加洗衣粉!!!")
    print("洗" + something)
    print("甩干")
# 洗衣服
washing_machine("衣服")
# 洗床单
washing_machine("床单")

图例

Python에서 함수를 만들고 호출하는 방법은 무엇입니까?

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

作用

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

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

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

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

位置参数

与 shell 脚本类似,程序名以及参数都以位置参数的方式传递给 python 程序,使用 sys 模块的 argv

# 函数的返回值: 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 키워드, 이름으로 구성됩니다. 함수 및 매개변수 집합(있는 경우) 단어)

def 절의 나머지 부분은 선택 사항이지만 적극 권장되는 문서 문자열

필수 함수 본문Python에서 함수를 만들고 호출하는 방법은 무엇입니까?

으로 구성됩니다.

함수 이름

의 이름을 지정해야 합니다. 다음의 명명 규칙을 준수합니다.

식별자

  • 문자, 밑줄, 숫자로 구성할 수 있습니다.

  • 숫자로 시작할 수 없습니다.
  • 함수 이름과 같을 수 없습니다. 키워드

#默认参数
#注意:具有默认值的参数后面不能跟没有默认值的参数
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
함수 호출 함수를 호출하려면 괄호()를 사용하세요. 괄호가 없으면 함수에 대한 참조일 뿐입니다. 모든 입력 매개변수는 괄호 안에 있어야 합니다. . 🎜🎜🎜범례: 🎜🎜🎜파이썬에서 함수를 만들고 호출하는 방법🎜🎜🎜사례: 세제 추가🎜🎜
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)
🎜생성 방법 및 call function in Python🎜🎜🎜Summary🎜🎜🎜🎜🎜 함수 정의 그 후에는 이 함수가 코드 조각을 캡슐화한다는 의미일 뿐입니다🎜🎜🎜🎜함수를 적극적으로 호출하지 않으면 함수는 적극적으로 실행하지 마세요🎜🎜🎜🎜생각해 보세요🎜🎜🎜🎜🎜 🎜함수 호출🎜을 🎜함수 정의🎜 위에 놓을 수 있나요? 🎜🎜
    🎜🎜안 돼요! 🎜🎜🎜🎜함수를 호출하기 위해 🎜함수 이름을 사용🎜하기 전에 Python이 이미 함수의 존재를 알고 있는지 확인해야 합니다🎜🎜🎜🎜 그렇지 않으면 콘솔에 NameError 메시지가 표시됩니다: 이름 '메뉴'가 정의되지 않았습니다 (🎜이름 오류: 메뉴 이름이 정의되지 않았습니다🎜)🎜🎜
🎜함수 매개변수🎜🎜형식 매개변수 및 실제 매개변수🎜🎜🎜🎜🎜형식 매개변수🎜:🎜 🎜 함수를 정의할 때 괄호 안의 매개변수는 매개변수를 받는 데 사용됩니다. 함수 내에서 🎜는 변수로 사용됩니다. 🎜🎜🎜🎜🎜🎜실제 매개변수🎜: 🎜가 🎜 함수를 호출할 때, 괄호는 🎜🎜🎜🎜Problem🎜🎜🎜을 사용하여 🎜내부 함수🎜에 데이터를 전달하는 데 사용됩니다. 다른 항목을 세척하려면 메서드 내부의 코드를 수동으로 변경해야 합니다. 🎜
#练习:生成随机密码
#创建 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)
🎜특정 사항이 있습니다. 함수 내부의 변화 값: 🎜
#练习:生成随机密码
#创建 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)
🎜🎜문제를 생각해 보세요🎜🎜🎜함수는 고정된 데이터만 처리할 수 있습니다🎜🎜🎜어떻게 해결하나요? 🎜🎜🎜함수 호출 시 처리해야 할 데이터를 함수 내부로 전달할 수 있다면 정말 좋을 것 같아요! 🎜🎜매개변수 전달🎜🎜🎜🎜함수 이름 뒤에 괄호를 입력하세요. 🎜Parameters🎜🎜🎜🎜🎜여러 매개변수를 구분하려면 , 를 사용하세요🎜🎜🎜🎜함수 호출 시 실제 매개변수 숫자 형식 매개변수의 수와 일치해야 하며 실제 매개변수는 형식 매개변수에 차례로 전달됩니다🎜🎜
# 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)
🎜🎜Legend🎜🎜🎜Python에서 함수를 만들고 호출하는 방법🎜
# foo.py
print(__name__)
 
# bar.py
import foo  # 导入foo.py,会将 foo.py 中的代码完成的执行一次,所以会执行 foo 中的 print(__name__)
🎜🎜function🎜🎜🎜🎜🎜function은 독립적인 함수가 포함된 코드 블록을 작은 모듈, 함수의 다양성을 높이고 동일한 데이터 처리 논리에 대해 더 많은 데이터에 적응해야 하는 경우 🎜🎜🎜🎜 함수의 매개변수를 호출합니다. 🎜🎜🎜1 함수 내에서 매개변수를 다음과 같이 사용합니다. 변수, 필요한 데이터 처리를 수행합니다🎜🎜2. 함수 호출 시 함수에 정의된 매개변수 순서에 따라 함수 내부에서 처리하려는 데이터를 매개변수를 통해 전달합니다.🎜🎜위치 매개변수🎜🎜는 shell 스크립트, 🎜프로그램 이름과 매개변수는 sys 모듈의 argv 목록을 사용하여 위치 매개변수의 형태로 Python 프로그램 🎜에 전달됩니다. 🎜🎜🎜legend🎜🎜🎜🎜🎜🎜기본 매개변수 🎜🎜기본 매개변수는 🎜기본값🎜이 선언된 매개변수입니다. 매개변수에는 기본값이 할당되어 있으므로 매개변수에 값을 전달하지 않는 것이 허용됩니다. 🎜🎜함수의 반환 값🎜🎜🎜🎜 프로그램 개발 중에 때로는 함수 실행 후 호출자에게 결과🎜를 알려주어 호출자가 특정 결과에 대한 후속 처리를 할 수 있도록 하고 싶을 때가 있습니다. 🎜🎜🎜🎜반환 값🎜은 🎜작업을 완료한 후🎜, 🎜마지막으로 🎜 호출자에게 🎜 결과 🎜🎜를 제공하는 함수입니다.
  • 在函数中使用 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    성명:
    이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제