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)
为什么需要导入模块?
可以提升开发效率,简化代码
正确使用
# 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
模块在被导入时,会先完整的执行一次模块中的 所有程序
案例
# 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
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0