Python中函数如何创建与调用(python,开发技术)

时间:2024-05-02 22:33:16 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

创建函数

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

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

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

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

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

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

  • 不能以数字开头

  • 不能与关键字重名

defwashing_machine():#洗衣机可以帮我们完成print("打水")print("洗衣服")print("甩干")

调用函数

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

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

图例:

Python中函数如何创建与调用

案例:加洗衣粉

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

Python中函数如何创建与调用

总结

  • 定义好函数之后,只表示这个函数封装了一段代码而已

  • 如果不主动调用函数,函数是不会主动执行的

思考

  • 能否将函数调用放在函数定义的上方?

    • 不能!

    • 因为在使用函数名调用函数之前,必须要保证Python已经知道函数的存在

    • 否则控制台会提示NameError: name 'menu' is not defined(名称错误:menu 这个名字没有被定义)

函数的参数

形参和实参

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

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

问题

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

defwashing_machine():#洗衣机可以帮我们完成print("打水")print("加洗衣粉!!!")print("洗床单")#洗被套print("甩干")

在函数内部有一定的变化的值:

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

思考一下存在什么问题

函数只能处理固定的数据

如何解决?

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

传递参数

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

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

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

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

图例

Python中函数如何创建与调用

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

作用

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

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

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

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

位置参数

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

图例

Python中函数如何创建与调用

默认参数

默认参数就是声明了默认值的参数,因为给参数赋予了默认值,所以在函数调用时,不向该参数传入值也是允许的

函数的返回值

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

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

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

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

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

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

Python中函数如何创建与调用

修改菲波那切数列

defnew_fib(n=8):list01=[0,1]#定义列表,指定初始值fordcinrange(n-2):list01.append(list01[-1]+list01[-2])returnlist01dc=new_fib()#不加参数默认是8dc1=new_fib(10)print("dc:",dc)print("dc1:",dc1)

Python中函数如何创建与调用

生成随机密码:

#练习:生成随机密码#创建randpass.py脚本,要求如下:#编写一个能生成8位随机密码的程序#使用random的choice函数随机取出字符#由用户决定密码长度importrandomdefnew_password():n=int(input("密码长度:"))password=""all="0123456789zxcvbnmlkjhgfdsaqwertyuiopPOIUYTREWQASDFGHJKLMNBVCXZ"#0-9a-zA-Zrandom.choice(all)foriinrange(n):dc=random.choice(all)password+=dc#print("passwd:",password)returnpassword#调用函数,才能执行函数内部逻辑dc=new_password()print("dc:",dc)

Python中函数如何创建与调用

#练习:生成随机密码#创建randpass.py脚本,要求如下:#编写一个能生成8位随机密码的程序#使用random的choice函数随机取出字符#由用户决定密码长度importrandom,stringdefnew_password():n=int(input("密码长度:"))password=""all=string.ascii_letters+string.digitsrandom.choice(all)foriinrange(n):dc=random.choice(all)password+=dc#print("passwd:",password)returnpassword#调用函数,才能执行函数内部逻辑dc=new_password()print("dc:",dc)

Python中函数如何创建与调用

模块基础

定义模块

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

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

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

导入模块 (import)

  • 使用import导入模块

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

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

为什么需要导入模块?

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

Python中函数如何创建与调用

正确使用

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

常用的导入模块的方法

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

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

模块加载 (load)

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

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

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

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

模块特性及案例

模块特性

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

案例

#foo.pyprint(__name__)#bar.pyimportfoo#导入foo.py,会将foo.py中的代码完成的执行一次,所以会执行foo中的print(__name__)

结果:

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

Python中函数如何创建与调用

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

deftest():......if__name__=="__main__":test()
 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:Python中函数如何创建与调用的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:C语言中排序算法怎么用下一篇:

5 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18