文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Python3快速入门(五)——Pyth

2023-01-31 08:17

关注

一、函数定义

1、函数定义

Python 定义函数使用 def 关键字,一般格式如下:

def function_name(parameter_list):
    pass

默认情况下,参数值和参数名称按函数声明中定义的顺序进行匹配。
函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。
任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
函数的第一行语句可以选择性地使用文档字符串描述函数说明。
函数内容以冒号起始,并且进行缩进。
函数的定义示例如下:

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

2、函数的返回值

函数使用return [表达式] 结束函数,返回一个或多个值给调用方。不带表达式的return相当于返回 None。

def get_fruits():
    apple = "Apple"
    banana = "Banana"
    orange = "Orange"
    return apple, banana, orange

a,b,c = get_fruits()
print(a, b, c)

二、函数调用

1、函数调用

函数定义只给了函数一个名称,指定了函数里包含的参数和代码块结构。
函数调用直接使用定义的函数名称以及传递相应的参数进行调用。

2、函数调用的递归限制

Python默认设置了函数的最大递归调用次数,开发者可以直接进行设置。设置方法如下:

#!/usr/bin/python3

import sys

sys.setrecursionlimit(100) # 设置最大递归次数为100

三、函数参数

1、必须参数

必须参数是函数调用时必须传递的参数。

#!/usr/bin/python3

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

add(3, 2)

2、关键字参数

关键字参数用于函数调用时,使用形式参数关键字将实际参数赋值给函数的相应形式参数,函数调用过程中传递实际参数顺序可以与形式参数顺序不匹配,但所有的必须参数必须被赋值。

#!/usr/bin/python3

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

add(y=2, x=3)

上述代码中,add函数的调用传递的实际参数通过指定关键字参数实际指定相应的形式参数,不必按照形式参数顺序匹配,但必须参数都必须被传递。

3、默认参数

函数在定义过程中可以为指定参数默认的值,并且必须参数必须放在默认参数的左侧。

#!/usr/bin/python3

def print_student(name, gender="男", age=28):
    print(name)
    print(gender)
    print(age)

print_student("Bauer", "男", 30)
print_student("Lee")
print_student("Lisa","女")

print_student(age=30, name="Bob")

函数调用时,可以使用关键字参数对形式参数进行赋值,默认参数可以缺省,但必须参数必须被赋值,必须参数可以使用关键字参数赋值。如果必须参数不使用关键字参数,则必须参数必须严格按照函数定义的顺序传递,其默认参数可以使用关键字参数选择性赋值,没有使用关键字参数传递的默认参数将使用默认值。

4、可变参数

可变参数通过使用*修饰形式参数定义可变参数。
函数定义时,可以定义可变参数,在函数调用时传递可变的多个实际参数。

#!/usr/bin/python3

def add(*args):
    result = 0;
    for x in args:
        result += x
    return result

c = add(1, 2, 3, 4)
print(c)
c = add(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
print(c)
tup1 = 1, 2, 3, 4
c = add(*tup1) # 传入序列
print(c)
list1 = [1, 2, 3]
c = add(*list1)
print(c)

对应定义了可变参数的的函数,如果需要传入序列作为实际参数,需要在序列前加*
如果函数定义时有可变参数和默认参数,函数调用时可以使用关键字参数用于指定默认参数。

#!/usr/bin/python3

def add(x, *args, y=100):
    result = x + y;
    for i in args:
        result += i
    return result

c = add(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) # 155
print(c)
c = add(1, 2, 3, 4, 5, 6, 7, 8, 9, y=10) # 55
print(c)

Python中,如果函数定义时可变参数放在默认参数的左侧,则默认参数需要使用关键字参数显式指定。

5、关键字可变参数

关键字可变参数通过使用**修饰形式参数定义,关键字可变参数为字典类型,关键字可变参数属于可选参数。

#!/usr/bin/python3

def average_score(**args):
    result = 0;
    for key, value in args.items():
        result += value
        print(key + ": ", value)
    result = result / len(args)
    print("Average score is ", result)
    return result

book = {"Bauer": 90, "Bob": 100, "Lisa": 70, "Lee": 100}
average_score(**book)
average_score(Bauer=100, Lisa=70, Lee=100)

函数调用时,关键字可变参数可以传递多个键值对,页可以直接传递dictionary类型变量,此时需要使用**修饰字典变量。

四、匿名函数

python 使用 lambda表达式来创建匿名函数,函数定义如下:
lambda [arg1 [,arg2,.....argn]]:expression
Lambda表达式定义的匿名函数的函数体不是一个代码块,因此,仅能在lambda表达式中封装有限的逻辑。
Lambda表达式拥有自己的命名空间,且不能访问自有参数列表外或全局命名空间里的参数。
虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。

#!/usr/bin/python3
# -*- coding:utf-8 -*-

sum = lambda arg1, arg2: arg1 + arg2;

# 调用sum函数
print(sum(10, 20))
print(sum(20, 20))

五、变量作用域

程序的所有的变量并不是在任何位置都可以访问的,访问权限决定于变量是在哪里赋值的。变量的作用域决定了在哪一部分程序可以访问哪个特定的变量名称。
定义在函数内部的变量拥有局部作用域,定义在函数外的拥有全局作用域,代码块内部局部变量会覆盖全局变量,在局部作用域内修改全局变量的值时,需要使用global关键字对相应全局变量进行声明,表明本作用域内使用的是全局变量。
局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。调用函数时,所有在函数内声明的变量名称都将被加入到作用域中。

#!/usr/bin/python3
# -*- coding:utf-8 -*-

base = 100

def sum(*args):
    global base
    base = 0
    result = 0;
    for i in args:
        result += i
    return result + base;

c = sum(1,2,3,4,5,6,7,8,9,10)
print(c) # 55
print(base) # 0
阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯