Python自学笔记---6.Python中的函数

我在学习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虽然被网上认为时最好上手的一门语言,但是个人觉得还是不要抱着任何侥幸心理来学习他。任何事物的精通都不是一蹴而就的,还希望看到的读者能踏踏实实的自己动手把代码敲一遍,反复的推敲一下,为什么要这样写?有没有比这种更优美的写法?如果你有更优美的写法,请留言或者私信我,相互学习,教学相长

你可能感兴趣的:(Python自学笔记)