返回顶部
首页 > 资讯 > 后端开发 > Python >Python中函数的创建与调用你了解吗
  • 183
分享到

Python中函数的创建与调用你了解吗

2024-04-02 19:04:59 183人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录创建函数调用函数函数的参数形参和实参 传递参数位置参数默认参数函数的返回值案例:计算任意两个数字的和模块基础定义模块基本概念导入模块 (import)模块加载 (loa

创建函数

函数用 def 语句创建,语法如下:

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

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

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

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

  • 可以由 字母、下划线 和 数字 组成
  • 不能以数字开头
  • 不能与关键字重名
def washing_Machine():  # 洗衣机可以帮我们完成
    print("打水")
    print("洗衣服")
    print("甩干")

调用函数

使用一对圆括号 () 调用函数,如果没有圆括号,只是对函数的引用

任何输入的参数都必须放置在括号中

图例:

案例:加洗衣粉

def washing_machine():  # 洗衣机可以帮我们完成
    print("打水")
    print("加洗衣粉!!!")
    print("洗衣服")
    print("甩干")
# 早上洗衣服
washing_machine()
# 中午洗衣服
washing_machine()
# 晚上洗衣服
washing_machine()

总结

  • 定义好函数之后,只表示这个函数封装了一段代码而已
  • 如果不主动调用函数,函数是不会主动执行的

思考

  • 能否将 函数调用 放在 函数定义 的上方?
    • 不能!
    • 因为在 使用函数名 调用函数之前,必须要保证 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("床单")

图例

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 关键字可以返回结果
  • 调用函数一方,可以 使用变量 来 接收 函数的返回结果

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

# 函数的返回值: 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

 修改菲波那切数列

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)

生成随机密码:

#练习:生成随机密码
#创建 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)

模块基础

定义模块

基本概念

  • 模块是从逻辑上组织Python代码的形式
  • 当代码量变得相当大的时候,最好把代码分成一些有组织的代码段,前提是保证它们的 彼此交互
  • 这些代码片段相互间有一定的联系,可能是一个包含数据成员和方法的类,也可能是一组相关但彼此独立的操作函数

导入模块 (import)

  • 使用 import 导入模块
  • 模块属性通过 “模块名.属性” 的方法调用
  • 如果仅需要模块中的某些属性,也可以单独导入

为什么需要导入模块?

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

正确使用

# 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 模块中执行代码的标准格式:

def test():
    ......
if __name__ == "__main__":
    test()

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注编程网的更多内容!

--结束END--

本文标题: Python中函数的创建与调用你了解吗

本文链接: https://lsjlt.com/news/144515.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python中函数的创建与调用你了解吗
    目录创建函数调用函数函数的参数形参和实参 传递参数位置参数默认参数函数的返回值案例:计算任意两个数字的和模块基础定义模块基本概念导入模块 (import)模块加载 (loa...
    99+
    2024-04-02
  • Python中函数如何创建与调用
    这篇文章主要介绍了Python中函数如何创建与调用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。创建函数函数用 def 语句创建,语法如下:def&nbs...
    99+
    2023-06-29
  • Python中函数的创建及调用
    目录一、前言二、创建一个函数三、调用函数四、pass空语句一、前言 提到函数,大家会想到数学函数吧,函数是数学最重要的一个模块,贯穿整个数学学习,在Python中,函数的应用非常广泛...
    99+
    2024-04-02
  • python的函数参数你了解吗
    目录前言位置传参关键字传参默认参数不定长参数混合使用问题创建时引用时总结前言 python参数类型和参数传递形式多样,相对于其他语言python使用会更加灵活。它传参形式一般分为两种...
    99+
    2024-04-02
  • 怎么创建和调用Python中的函数
    创建函数函数用 def 语句创建,语法如下:def 函数名(参数列表): # 具体情况具体对待,参数可有可无 """函数说明文档字符串""" ...
    99+
    2023-05-20
    Python
  • Python中函数如何创建及调用
    这篇文章主要介绍了Python中函数如何创建及调用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python中函数如何创建及调用文章都会有所收获,下面我们一起来看看吧。一、前言提到函数,大家会想到数学函数吧,函...
    99+
    2023-07-02
  • python中的getter与setter你了解吗
    目录前言复制型编写使用python的装饰器总结前言 因为java开发的习惯,想要在python开发中使用类似JavaBean的结构。 复制型编写 在python可以直接结合java中...
    99+
    2024-04-02
  • C++的多态与虚函数你了解吗
    目录多态性虚函数总结多态性 多态性是面向对象程序设计的关键技术之一,若程序设计语言不支持多态性,不能称为面向对象的语言,利用多态性技术,可以调用同一个函数名的函数,实现完全不同的功能...
    99+
    2024-04-02
  • TypeScript中的函数和类你了解吗
    目录函数作为参数定义函数函数参数的类型可选类型参数默认值剩余参数this的默认推导函数重载类初始化继承多态成员修饰符总结函数 以下声明了一个函数类型,通过type来定义类型别名,vo...
    99+
    2024-04-02
  • Python 中的单分派泛函数你真的了解吗
    泛型,如果你学过Java ,应该对它不陌生吧。但你可能不知道在 Python 中(3.4+ ),也可以实现简单的泛型函数。 在Python中只能实现基于单个(第一个)参数的数据类型来...
    99+
    2024-04-02
  • C++中的函数你真的理解了吗
    目录1 概述2 函数的定义及调用3 值传递4 函数的常见形式5 函数的声明6 函数的分文件编写作用:让代码结构更加清晰1.2.3.4.总结1 概述 作用:将一段经常使用的代码进行封装...
    99+
    2024-04-02
  • NumPy 函数在 Python 开发技术中的应用,你了解吗?
    Python 是一种流行的编程语言,因其简洁易学、易读易写、开放源代码、可移植性强等特点而备受开发者青睐。而 NumPy 是 Python 中一个重要的科学计算库,包含了多种数值计算、数组处理和矩阵计算等功能,可以帮助开发者快速高效地完成...
    99+
    2023-06-03
    开发技术 numy 函数
  • Python Spring 函数同步:你真的了解它吗?
    在Python中,函数同步是常见的问题,尤其是在多线程或者多进程的情况下。Python提供了一些解决方案,其中之一就是使用Spring函数同步。本文将介绍Spring函数同步的基本概念和使用方法。 什么是Spring函数同步? Sprin...
    99+
    2023-06-22
    spring 函数 同步
  • C++中类的转换函数你了解吗
    只有接受一个参数(其他参数有默认值的也算)的构造函数才能作为转换构造函数。 在C++中,接受一个参数的构造函数为将类型与该参数相同的值转换为类提供了蓝图。因此,下面的构造函数用于将d...
    99+
    2024-04-02
  • C++的内联函数你了解吗
    目录1.概念2.函数演示3.函数特性总结1.概念 以inline修饰的函数叫做内联函数,编译时C++编译器会在调用内联函数的地方展开,没有函数压栈的开销,内联函数提升程序运行的效率。...
    99+
    2024-04-02
  • 你知道Python IDE中的Path函数吗?了解它的作用和用法。
    Python IDE中的Path函数是一个非常实用的工具,它可以帮助我们在操作文件和目录时更加方便和高效。在本文中,我们将深入探讨Path函数的作用和用法,同时会给出一些代码示例来演示它的使用方法。 一、Path函数的作用 Path函数是P...
    99+
    2023-07-26
    ide path 函数
  • python的函数形参和返回值你了解吗
    目录函数的返回值函数的参数不可变参数和可变参数+=函数的参数缺省参数多值参数元组和字典的拆包总结函数的返回值 一个函数执行后可以返回多个返回值 def measure(): ...
    99+
    2024-04-02
  • Python 分布式实时函数,你真的了解吗?
    随着互联网的发展,数据量越来越庞大,单机计算已经难以满足需求。因此,分布式计算应运而生。而在分布式计算中,实时计算也是一种非常重要的方式。Python 作为一种高级编程语言,其在分布式实时计算中也有着广泛的应用。本文将介绍 Python ...
    99+
    2023-06-02
    分布式 实时 函数
  • C语言的函数概念与规则你了解吗
    目录一、函数概念1.传入参数2.返回值二、函数参数三、指针函数-函数名指针化1.指针指向其他函数的函数名(标签)效果2.指针指向其他函数的地址效果3.通过二级指针,将一组函数线性化四...
    99+
    2024-04-02
  • 带你了解C++的数组与函数
    目录数组作为函数的参数数组参数的传递机制数组作为函数的参数 传递首地址。 A进行修改,a同时也会进行修改。 数组参数的传递机制 ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作