基本语法
通过关键字 def 进行定义函数。def后跟函数名,返回时使用 return 关键字:
1,函数中除了 _ 没有其他特殊字符
2,函数中可以有数字,但是数字不能放在首位。一般都是放在后面。
3,函数名可以使用英文,但是不建议使用中文。一般命名都会使用有意义的名字。
# 定义最基本的函数
def f1():
pass
- f1 为函数名
- () 每个函数后面都需要有(), 固定的。
pass
表示函数的占位符,这个函数还没有实现逻辑,先占个位置。
在搭建框架的时候,可以先把主要函数定义出来,等后续实现,使用 pass 作为占位符。
下面来定义一个 写入文件的函数。
定义函数
def write_file():
with open('hello.txt',mode='w',encoding='utf8') as file:
# 写入文件, whitelines 需要 列表类型的数据
file.writelines(["hello","world"])
将执行的代码 放在函数内部
函数定义好了以后,只是定义好了运行时不会执行。只用在调用的时候才能执行。
def write_file():
with open('hello.txt',mode='w',encoding='utf8') as file:
# 写入文件, whitelines 需要 列表类型的数据
file.writelines(["hello","world"])
#调用函数
write_file()
调用函数之后,运行代码就可以看到效果。
函数参数
上面函数定义的时候每次写入文件都是写入hello.txt中,不够灵活,我们希望能够写入不同的文件
中。可以在定义函数的时候设置一个参数
指定参数
def write_file_name(name):
"""
函数注释: 写入文件的时候提供一个文件名,指定写入的文件
:param name: 要写入的文件名
:return:
"""
with open(name,mode='w',encoding='utf8') as file:
file.write("helloworld")
# 调用函数的时候 需给函数传入一个具体值
write_file_name('fanmao.txt')
write_file_name('abc.txt')
- write_file_name 函数名
- (name) 函数的参数, name 表示传入的文件名, name 这里类似变量名,可以任意命名,比如也可以改为 filename 等, 需要注意,函数内部使用的时候,要跟(参数名) 要保持一致。
调用函数,传入对应的参数值。运行可以看到的执行结果。
函数也可以设置多个can'sh
def write_file_filename_content(filename,filecontent):
"""
自定义内容写入指定文件
:param filename: 文件名字
:param filecontent: 文件中的内容
:return:
"""
with open(filename,mode='w',encoding='utf8') as file:
file.write(filecontent)
write_file_filename_content('china.txt','hahahahaha')
根据函数的功能,可以设置多个参数。
- 函数的注释, 可以让别人快速的了解这个函数是做什么的。这个注释可以加,也可以不加,规范的做法需要添加注释。
添加注释的好处就是再调用函数的时候,可以快速知道这个函数的功能。
鼠标移动到函数上可以看到注释。
函数参数的默认值
在定义函数的时候,可以为参数指定默认值。
# 定义函数的时候 使用默认值
def write_file_with_default_contet(filename,filecontent="helloworld"):
"""
定义函数 带有默认值参数
:param filename: 文件名
:param filecontent: 文件内容
:return:
"""
with open(filename,mode='w',encoding='utf8') as file:
file.write(filecontent)
# 函数定义的时候 有默认值, 调用的是不传参,运行的时候会自动使用默认值。
write_file_with_default_contet('b.txt') # 使用默认值
write_file_with_default_contet('c.txt',"hahaha") # 不使用默认值
调用的时候,如果有默认值的参数不传值,运行的时候会使用默认值。
传值就会覆盖默认值。
默认值的注意事项:
如果一个函数中有默认值,定义函数的时候,默认值的位置要放在后面,必填值的位置放在前面。上面定义的函数,定义的时候,参数的位置必须是这样 (filename,filecontent="helloworld")
不能将有默认值的参数放在前面 (filecontent="helloworld",filename)
这是错误的。
如果定义的函数 只有一个参数,参数也有默认值,直接定义即可。
def f1(name="xiaoming"):
print(f"hi,{name}")
#调用函数
f1() # 使用默认值
f1("小王")
在定义的函数中 可以通过return 关键字来设置函数的返回值。比如函数中没有return ,这个函数的值默认为 None。
比如下面这个函数
def f1():
a = 1
b = 2
c = a+b
print(f1())
f1() 函数没有返回值。所以打印的时候为 None。
return 返回值
在函数内部通过使用 return 来返回结果。函数就有值了。
def f1():
a = 1
b = 2
c = a+b
return c
print(f1())
这个函数有 return 关键字,将c的结果return出来, 当调用f1() 函数的时候,就会返回对应的值。 c结果就可以给到f1()。
所以执行结果为 3