Python基础教程学习(函数)

1.函数定义

下面是函数的定义语法:

def functionname( parameters ):

    "函数_文档字符串"

    function_suite

    return [expression]

在定义函数的时候需要注意以下几点:

  • 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。
  • 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
  • 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
  • 函数内容以冒号起始,并且缩进。
  • return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。

注:函数体内语句统一空相同空格。

2.函数的调用

FunctionName(args)

在上面的语法中,FunctionName表示函数名称,args为函数的参数

下面举个例子:

#!/usr/bin/env python
# coding:utf-8

# --------------------------------
#  Author     :
#  Email      :
#  Version    :
#  Create_date:
#  Description:
# --------------------------------


def sub(a, b):
    """
    计算a+b
    :param a: int
    :param b: int
    :return: a+b
    """
    return a+b


def main():
    # 我们可以通过调用__doc__函数获取sub函数的doc描述
    print(sub.__doc__)
    print(sub(5, 10))


if __name__ == "__main__":
    main()

Output:

$ python main.py

    计算a+b
    :param a: int
    :param b: int
    :return: a+b

15

注:定义函数时,函数不执行调用函数时,函数才执行;

3.有参数的函数

【1】必选参数

必选参数是函数定义的时候括号里面的参数,如下面函数的x和y参数:

def add(x, y):
    return x + y

【2】默认参数

我们在定义函数的时候可以给参数设置默认值:

def mypow(x,y=2):
    """
    这个函数定义了两个参数,分别是x和y,其中y参数的默认值为2
    因此在调用函数的时候如果不传参数y,那么python会自动给y赋值为2
    """
    return x**y

【3】可变参数

在Python中,我们可以通过*args的形式定义一个参数,args这个可以自己命名,通过这种方式定义的参数为可变参数,其实本质上*args表示要接收的参数为一个元组,元组的个数是不确定的,因此叫可变。

下面举个例子:

#!/usr/bin/env python
# coding:utf-8

# --------------------------------
#  Author     :
#  Email      :
#  Version    :
#  Create_date:
#  Description:
# --------------------------------


def add(*args):
    """
    计算多个数字的和
    :param rgs: int类型的元组
    :return: 传入参数的和
    """
    count = 0
    for i in args:
        count += i
    return count


def main():
    # 我们可以通过调用__doc__函数获取sub函数的doc描述
    print(add.__doc__)
    # 计算 5 + 10 + 11
    print(add(5, 10, 11))


if __name__ == "__main__":
    main()

Output:

$ python main.py

    计算多个数字的和
    :param rgs: int类型的元组
    :return: 传入参数的和

26

注: args可以改为其他变量名;args实质上是一个元组 ;

【4】关键字参数

关键字参数通过**kwargs的形式定义,传入的是不定长的命名参数(命名参数存储的是字典,相对于无命名参数存储的是元祖)kwargs可以自定义其他名称。

举个例子:

#!/usr/bin/env python
# coding:utf-8

# --------------------------------
#  Author     :
#  Email      :
#  Version    :
#  Create_date:
#  Description:
# --------------------------------


def add(*args, **kwargs):    # 注意:当同时使用*args和**kwargs的时候,*args需要放到前面
    """
    计算多个数字的和
    :param rgs: int类型的元组
    :return: 传入参数的和
    """
    # kwargs是一个字典,这里输出值
    print(kwargs["name"])
    print(kwargs["function"])
    # 计算args的和
    count = 0
    for i in args:
        count += i
    return count


def main():
    # 我们可以通过调用__doc__函数获取sub函数的doc描述
    print(add.__doc__)
    print(add(5, 10, 11, name="add", function="计算5+10+11"))


if __name__ == "__main__":
    main()

Output:

$ python main.py

    计算多个数字的和
    :param rgs: int类型的元组
    :return: 传入参数的和

add
计算5+10+11
26

注:kwargs可以改为其他变量名; kwargs实质上是一个字典 ;

【5】返回值

函数的返回值前面已经用过了,这里需要注意的是函数中如果没有return时,默认返回None;另外Python中函数还可以返回多个值,多个返回值以英文逗号隔开即可:

举个例子:

#!/usr/bin/env python
# coding:utf-8

# --------------------------------
#  Author     :
#  Email      :
#  Version    :
#  Create_date:
#  Description:
# --------------------------------


def add(*args):
    """
    计算多个数字的和
    :param args: int类型的元组
    :return: 传入参数的和
    """
    # 计算args的和
    count = 0
    for i in args:
        count += i
    return count, "ok"


def main():
    # 我们可以通过调用__doc__函数获取sub函数的doc描述
    print(add.__doc__)
    count, ok = add(5, 10, 11)
    print("count:", count)
    print("ok:", ok)


if __name__ == "__main__":
    main()

Output:

$ python main.py

    计算多个数字的和
    :param args: int类型的元组
    :return: 传入参数的和

count: 26
ok: ok

注:实质上 python只能返回一个值;间接通过元组返回多个值;

【6】函数的作用域

global关键字必须要先声明,再赋值,在下面的例子中可以看到,在函数内部通过global关键字定义了一个num,在函数外同样可以调用该参数。

【7】高级特性

isinstance判断是否可迭代;

 

4.列表生成式

生成列表的公式

需求: 生成一个列表, 返回1-100中偶数的平方;

【1】方法 1 :

 

【2】方法 2 :

 

 

【3】变异的列表生成式

 

  • for 循环嵌套 if 语句     [i**2 for i in range(2,20) if i%2==0]
  • for 循环嵌套 for 循环 , 两个字符串的全排列    [i+j for i in 'xyz' for j in '123']

测试:

找出/etc下文件中以.conf结尾的文件;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值