我在学习C语言的时候,在打印了hello world 之后,就开始尝试这在一个函数中打印,并且在一个for循环中调用它,按照自己的意图打印多次。
函数能提高应用的模块性,和代码重复利用率。那么如何在Python中编写自己函数呢 ?且看下文分析
Python中的函数
定义一个函数的语法如下:
def 函数名(参数列表):
函数体
return 返回值 #如果要返回多个值可以尝试返回一个元组,然后在调用程序中对元组进行解包处理
1.不带参数和返回值的函数
那么我们如何自己编写一个函数,并调用这个函数循环打印“hello world”,详情如下:
def prt():
print("hello world")
for i in range(5): #循环打印5次
prt()
2.带参数和一个返回值的函数
def foo(x):
a = x + x
return a
value = foo(6)
print("the value is %d" % value)
3.带有多个参数和返回值的函数
def fun(a = 9,item = None): #此处的a = 9 也可以直接给一个数字9但不建议这样做
if item:
x = a + a
else:
x = a * a
y = a - 1
z = a + 1
return(x, y, z)
value1, value2, value3 = fun(9, item = True) #对返回的元组进行解包处理
print("the value1 = %d,the value2 = %d,the value3 = %d"% (value1, value2, value3))
4.最后一个参数带* 或者 **的函数
如果给最后一个参数名加上 * (星号),函数就可以接受任意数量的参数
请看如下实例,类似于C语言在将数组名传递给另外一个函数:
import sys
def fun2(file, fmt, *args):
file.write(fmt % args)
def printf(fmt, *args): #printf函数通过*args将元组传递给fun2函数
fun2(sys.stdout, fmt, *args)
printf("%d %s %f", 42, "hello world", 3.14)
如果函数定义的最后一个参数以 ** 开头,所有额外的关键字参数都可以放入一个字典中,并把这个字典传递给参数,类似于C语言中的结构体传值一样(目前请这样理解,等后续认识深入了就自然明白其用法了)
def fun3(age1, **args):
print("age1 = ", age1)
print(args)
def fun4(item, **args):
if item:
fun3(age1 = 20,**args)
else:
print("You can't get anything")
fun4(item = True, name = "allen", age = 18, career = "coder")
其打印结果如下:
age1 = 20
{'name': 'allen', 'age': 18, 'career': 'coder'}
总结
- 本节我们学习了python中如何自己编写一个函数的四种不同的方式,当然限于笔者目前认知不够深入,能从书籍和论坛上搜集到的只有这四种,随着一会学习的更深入,再做补充。
- python虽然被网上认为时最好上手的一门语言,但是个人觉得还是不要抱着任何侥幸心理来学习他。任何事物的精通都不是一蹴而就的,还希望看到的读者能踏踏实实的自己动手把代码敲一遍,反复的推敲一下,为什么要这样写?有没有比这种更优美的写法?如果你有更优美的写法,请留言或者私信我,相互学习,教学相长