python函数的定义与实例总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiaohen123456/article/details/81811852

目录

1. What is 函数?

2. 函数的参数

2.1普通参数

2.2 收集参数

3. 函数的返回值return

4.函数变量的作用域

5. 函数导入的方式

6.函数文档

6.1文档写法

6.2文档查看


 

1. What is 函数?

       以前我们都熟知函数有一次函数(正比例函数),二次函数,三次函数等等各种数学公式。通过各种方式求得结果的一种解决方法,而这里也是一样,函数就是一种解决方法。接下来我们就来看下函数的定义:

逻辑框架:

def 函数名([参数1],[参数2],[….]):
     函数体

值得注意的有:1.函数严格区分大小写          2.函数重名会被覆盖         3.函数后面有一个冒号       4.函数名遵循命名规则

了解完定义,还得知道怎么用才是运用。接下来就来讲解函数的调用,其中方式为:

函数名([参数1],[参数2…])

2. 函数的参数

2.1普通参数

     了解完函数的定义及调用,接下来我们就可以体会一下其中的内涵啦!!!首先是函数中的参数,其中参数有形参(在定义函数的时候 括号内的变量)以及实参(在函数调用的时候 传入的参数),然后就是关键字参数,对于关键字就是你的形参名可以形容在调用的时候使用形参名=值

例如:

def func(a,b,c): #a,b,c为形式参数
    pass
func(1,2,3) #其中1,2,3为实际参数
func(c=10,b=20,a=30)   # 关键字参数

在了解参数定义的以后,我们能联想到在生活中有很多东西都是规定好的(默认的),因此在这里有定义一个默认参数,其中机构为:

def 函数名(参数名=值…):

实例:

def func(a = 10, b = 10):  # 正确给形参默认值的操作
def func(a, b = 10):  # 正确给形参默认值的操作
#def func(a = 10, b): # 错误给形参默认值的操作 
    pass

注意:

  1. 函数在定义的时候 如果有形参 且没有默认值,必须传实参
  2. 如果没有形参则不能传实参
  3. 如果形参没有默认值 那么实参的个数必须和形参的个数相同
  4. 如果形参有默认值 那么可以不用传实参
  5. 形参和实参一一对应
  6. 当给形参的默认值时 必须遵循默认值的规则

2.2 收集参数

由于python的随意性,我们了解在很多情况下,也就是传入的参数的个数不固定,我们引入了收集参数的定义。同时地下出现了元组与字典属性,对于元组类型,是个有序的集合。而对于字典类型,我们可以理解为成对出现的键值对,能够从前面探知到后面的类型。

(1) 以元组的形式去接收 *参数名 (任意数量的实参)

注意的有:

  1. args前面带有星号*
  2. 能够与普通参数共存

实体结构:

def 函数名(*args): (args 可以随意取)
     pass
  1. 实例:

    def demo(*args):
        print(args)  
        print(type(args))  # 都为tuple
    # demo(1,2,3,4)  # (1, 2, 3, 4)
    demo(1)  # (1,)
    demo()  # () 空元组

    (2) 以字典的形式去接收不确定实参 **kwargs (任意数量的关键字实参)

    主体结构:

    def 函数名(**kwargs):
        pass
    

    函数名(x=1,y=2,z=3)

    实例:

    def demo(**kwargs):
        print(kwargs)  # {'x': 1, 'y': 2, 'z': 3, 'a': 4}
        print(type(kwargs))  # <class 'dict'>
    demo(x =1,y=2)  # ok 

    (3) 将参数为字典的值变成为关键字参数传入函数 **实参名

    主体结构:

    def 函数名(**kwargs):
             passmyDict = {'x':1,'y':2} # 字典的值
    函数名(**myDict) # 等价于需要传入关键字参数
    函数名(x=1,y=2)

    实例:

  2. def func(**kwargs):
        print(kwargs)
    myDict = {'x':1,'y':2}
    func(**myDict)  # ok  # {'x': 1, 'y': 2}

    (4) *args和**kwargs的组合

  • 主体结构:

  1. def 函数名(*args,**kwargs):
        pass
    

    注意:

  • *args和**kwargs的实参可传可不传,不传的话为空元组,空字典
  • *args和**kwargs的实参 可以对某个不进行传参 某个不传参数的为空元组或空字典
  • 组合的顺序: 位置参数,默认参数(x=1),可变参数(args),键值对参数(关键字参数kwargs)

实例:

def func4(*args, **kwargs):
    print(args)
    print(kwargs)
func4(x=1,y=2)  # ()  {'x'= 1, 'y'= 2}
func4(x=5) #{'x'= 5}

3. 函数的返回值return

1.return 会把值返回给调用处(就是函数名()的位置)

函数执行遇到return 就认为执行完毕 下面代码不在执行

def sum(x, y):
    print("输出的和为:")
    return x + y  # 函数执行 遇到return 就认为函数完毕 下面代码不在执行
    # print("输出的和就是:")  # 不执行
print(sum(1, 2))  # 返回值为 3

2.return 返回多个值

def func():
    pass
    return 1,2,3
    # tuple 这种写法返回元组

3.函数无返回值时,默认返回NONE

4.函数变量的作用域

对于变量而言,我们主要研究在于范围,其中有全局和局部之分。而在函数这部分讲解,是因为他的区分是在函数。在函数外部定义的变量我们称之为全局变量,在函数内部定义的变量我们称之为局部变量。值得注意的是:函数内可以用全局变量,但函数外不可以用局部变量。

实例

num1 = 23 #全局变量
def func1():
    print(num1) #23
func1
def func2():
    num2 = 32423dfjk
    print('局部变量为:{0}'.format(num2))
dunc2()
print('num2') #NONE

但是为了方便,我们可以将局部变量声明为全局变量,关键字为global

num1 = 11 #全局变量
def func3():
    global num1 = 22 #局部变量为全局变量
    print(num1)
func3()
print(num1) #结果为22

5. 函数导入的方式

在了解到这些之后,我们必须的有一个更高的认识。对于日常中我们经常会建立文件夹来归类相同的事物,等需要用时就知道在哪进行打开,对于函数也是如此。每当我们定义好一个函数以后,就会将它进行打包放到一个库中,等日后需要用时,我们就进行调用,其形式如下所示:

from 库名 import 包名
from 库名 import 包名 as 别名
from 库名.包名 import 方法名1,方法名2,…
import 包名 as 别名

___name___:系统属性 可以在包被引入时候 可以判断当前程序执行是否在主文件里,在主文件里值为__main__
作用:在运行时检测该模块是被导入还是被直接执行
如果模块是被导入,__name__的值为模块名字;如果是被直接执行,__name__的值为"__main__"。
注意:

  1. 不要将包或者库的名字中存在数字,起一个规范的有意义的字母的名字
  2. 如果模块包含的属性和方法与你的某个模块同名,你必须使用import module来避免名字冲突

6.函数文档

          函数文档的作用在于提供函数相应的参考信息

6.1文档写法

  • 使用三引号来进行注释
  • 一般具有特定格式
  • 参看案例
  • def func5():
        '''
        这是多行注释信息
        注释函数作用
        不在运行中
        '''
        for i in [1:20]:
            print(i)
    func5()
    

6.2文档查看

  • 使用函数help,形如help(func);
  • 使用_doc_,查看案例
  • help(func5())
    func5._doc_

猜你喜欢

转载自blog.csdn.net/xiaohen123456/article/details/81811852
今日推荐