注明:本系列课程专为全国计算机等级考试二级 Python 语言程序设计考试服务

目录

考纲考点函数的定义和使用

函数的参数传递: 可选参数传递、参数名称传递、函数的返回值

变量的作用域: 局部变量和全局变量

知识导图

1、函数的基本使用

函数的定义函数是一段具有特定功能的、可重用的语句组,通过函数名来表示和调用。经过定义,一组语句等价于一个函数,在需要使用这组语句的地方,直接调用函数名称即可。

因此,函数的使用包括两部分:函数的定义和函数的使用。

函数是一种功能抽象。

Python定义一个函数使用def保留字,语法形式如下:

def ():

return 函数名可以是任何有效的Python标识符

参数列表是调用该函数时传递给它的值,可以有零个、一个或多个,当传递多个参数时各参数由逗号分隔,当没有参数时也要保留圆括号。

函数体是函数每次被调用时执行的代码,由一行或多行语句组成。# 定义一个对整数n求阶乘的函数

def fact(n):

s = 1

for i in range(1, n+1):

s *= i

return s如果需要返回值,使用保留字return和返回值列表。函数可以没有return语句,函数体结束后会将控制权返回给调用者。

函数的使用定义后的函数不能直接运行,需要经过“调用”才能运行。调用函数的基本方法如下:

()#定义一个对整数n求阶乘的函数

def fact(n):

s = 1

for i in range(1, n+1):

s *= i

return s

# 调用整数阶乘的函数

print(fact(100))具体来说,函数的使用一共分为四个步骤:

1. 函数定义

使用def保留字将一段代码定义为函数,需要确定函数的名字、参数的名字、参数的个数,使用参数名称作为形式参数(占位符)编写函数内部的功能代码。

2. 函数调用

通过函数名调用函数功能,对函数的各个参数赋予实际值,实际值可以是实际数据,也可以是在调用函数前已经定义过的变量。

3.函数执行

函数被调用后,使用实际参数(赋予形式参数的实际值)参与函数内部代码的运行,如果有结果则进行输出。

4.函数返回

函数执行结束后,根据return保留字的指示决定是否返回结果,如果返回结果,则结果将被放置到函数被调用的位置,函数使用完毕,程序继续运行。

2、函数的参数传递

可选参数传递函数的参数在定义时可以指定默认值,当函数被调用时,如果没有传入对应的参数值,则使用函数定义时的默认值替代,函数定义时的语法形式如下:

def (, = ):

return 需要注意,可选参数一般都放置在非可选参数的后面,即定义函数时,先给出所有非可选参数,然后再分别列出每个可选参数及对应的默认值。>>>def multiply(x, y = 10):

print(x*y)

>>>multiply(99)

990

>>>multiply(99, 2)

198

参数名称传递Python语言同时支持函数按照参数名称方式传递参数,语法形式如下:

( = )>>>def multiply(x, y = 10):

print(x*y)

>>>multiply(x = 99)

990

>>>multiply(y = 2, x = 99)

198

函数的返回值return语句用来结束函数并将程序返回到函数被调用的位置继续执行。

return语句可以出现在函数中的任何部分,同时可以将0个、1个或多个函数运算的结果返回给函数被调用处的变量。>>>def multiply(x, y = 10):

return x*y

>>>s = multiply(99, 2)

>>>print(s)

198函数可以没有return,此时函数并不返回值。当函数使用return返回多个值,可以使用一个变量或多个变量保存结果。>>>def multiply(x, y = 10):

return x*y, x+y

>>>s = multiply(99, 2)

>>>print(s)

(198, 101)

>>>a,b = multiply(99, 2)

>>>print(a)

198

>>>print(b)

101

3、变量的作用域根据程序中变量所在的位置和作用范围,变量分为局部变量和全局变量。

局部变量仅在函数内部,且作用域也在函数内部,全局变量的作用域跨越多个函数。

局部变量局部变量指在函数内部使用的变量,仅在函数内部有效,当函数退出时变量将不再存在。>>>def multiply(x, y = 10):

z = x*y # z是函数内部的局部变量

return z

>>>s = multiply(99, 2)

>>>print(s)

198

>>>print(z)

Traceback (most recent call last):

File "", line 1, in

print(z)

NameError: name 'z' is not defined变量z是函数multiple()内部使用的变量,当函数调用后,变量z将不存在。

全局变量全局变量指在函数之外定义的变量,在程序执行全过程有效。全部变量在函数内部使用时,需要提前使用保留字global声明,语法形式如下:

global >>>n = 2 #n是全局变量

>>>def multiply(x, y = 10):

global n

return x*y*n # 使用全局变量n

>>>s = multiply(99, 2)

>>>print(s)

396上例中,变量n是全局变量,在函数multiply()中使用时需要在函数内部使用global声明,定义后即可使用。

如果未使用保留字global声明,即使名称相同,也不是全局变量。>>>n = 2 #n是全局变量

>>>def multiply(x, y = 10):

n = x*y

return n # 此处的n不是全局变量

>>>s = multiply(99, 2)

>>>print(s)

198

>>>print(n) #不改变外部全局变量的值

2

4、代码复用函数是程序的一种基本抽象方式,它将一系列代码组织起来通过命名供其他程序使用。

函数封装的直接好处是代码复用,任何其他代码只要输入参数即可调用函数,从而避免相同功能代码在被调用处重复编写。代码复用产生了另一个好处,当更新函数功能时,所有被调用处的功能都被更新。

模块化设计指通过函数的封装功能将程序划分成主程序、子程序和子程序间关系的表达。模块化设计是使用函数设计程序的思考方法,以功能块为基本单位,一般有两个基本要求:

紧耦合:尽可能合理划分功能块,功能块内部耦合紧密;

松耦合:模块间关系尽可能简单,功能块之间耦合度低。耦合性指程序结构中各模块之间相互关联的程度,它取决于各模块间接口的复杂程度和调用方式。

紧耦合指模块或系统间关系紧密,存在较多或复杂的相互调用。紧耦合的缺点在于更新一个模块可能导致其它模块变化,复用较困难。

松耦合一般基于消息或协议实现,系统间交互简单。

使用函数只是模块化设计的必要非充分条件,根据计算需求合理划分函数十分重要。一般来说,完成特定功能或被经常复用的一组语句应该采用函数来封装,并尽可能减少函数间参数和返回值的数量。

5、实例解析:软文的诗词风软文的诗词风将原有文章根据标点符号重新切分成短句并居中排版,对小屏幕阅读十分有利。使用程序将普通文章变成软文的诗词风十分有趣txt = '''

人生得意须尽欢,莫使金樽空对月。

天生我材必有用,千金散尽还复来。

'''

linewidth = 30 # 预定的输出宽度

def lineSplit(line):

plist = [',', '!', '?', ',', '。', '!', '?']

for p in plist:

line = line.replace(p, '\n')

return line.split('\n')

def linePrint(line):

global linewidth

print(line.center(linewidth, chr(12288)))

newlines = lineSplit(txt)

for newline in newlines:

linePrint(newline)原始文本使用变量txt保存,程序运行效果如下。>>>

人生得意须尽欢

莫使金樽空对月

天生我材必有用

千金散尽还复来

原始文本使用变量txt保存,程序运行效果如下。txt = '''

三国演义 上卷

罗贯中

滚滚长江东逝水,浪花淘尽英雄。是非成败转头空。青山依旧在,几度夕阳红。

白发渔樵江渚上,惯看秋月春风。一壶浊酒喜相逢。古今多少事,都付笑谈中。

第一回 宴桃园豪杰三结义 斩黄巾英雄首立功

话说天下大势,分久必合,合久必分。周末七国分争,并入于秦。及秦灭之后,

楚、汉分争,又并入于汉。汉朝自高祖斩白蛇而起义,一统天下,后来光武中兴,

传至献帝,遂分为三国。

'''>>>

三国演义 上卷

罗贯中

滚滚长江东逝水

浪花淘尽英雄

是非成败转头空

青山依旧在

几度夕阳红

白发渔樵江渚上

惯看秋月春风

一壶浊酒喜相逢

古今多少事

都付笑谈中

--调寄《临江仙》

第一回 宴桃园豪杰三结义 斩黄巾英雄首立功

话说天下大势

分久必合

合久必分

周末七国分争

并入于秦

及秦灭之后

楚、汉分争

又并入于汉

汉朝自高祖斩白蛇而起义

一统天下

后来光武中兴

传至献帝

遂分为三国当每句长度超过变量linewdith后,显示效果并不好。这需要修改函数linePrint(),当一个短句行数超过限制时,分行居中显示。def linePrint(line):

global linewidth

while len(line) > linewidth:

print(line[0:linewidth])

line = line[linewidth:]

print(line.center(linewidth, chr(12288)))

本章小结

本章讲解了函数的基本使用方法,包括函数的定义和调用。进一步具体讲解了函数的参数传递方法和变量的作用域,包括可选参数传递、参数名称传递和函数的返回值,初步介绍了函数的作用和代码复用。通过软文的诗词风实例帮助读者理解函数的定义和使用。

古代的诗词歌赋是填词怡情,当代的诗词歌赋则是风格怡情,快来造个自己风格吧?!

python语言程序代码保存在_《计算机二级Python语言程序设计考试》第5章:函数和代码复用...相关推荐

  1. python语言提供的3个基本数字类型是什么_计算机二级python学习教程(3) python语言基本数据类型...

    本文继续计算机二级python教程的学习,之前已经学习过了计算机二级python学习教程(1) .计算机二级python学习教程(2) 3.1 数字类型 数字类型:整数类型.浮点数类型.复数类型. 整 ...

  2. 计算机二级python用什么书-如何准备全国计算机二级Python?

    如果你也和我一样是零基础学习,希望你过! 以下是我的回答提纲 /> 一.参考过的知乎回答这是我找到的最全面的备考攻略,第一推荐!!考完发现他还有更新!!曹操:计算机二级 Python 怎么考?考 ...

  3. 程序异常是python语言基本控制结构_计算机二级python 知识点篇(程序的控制结构)...

    计算机二级python 知识点篇(程序的控制结构) 程序的基本结构 程序由三种基本结构组成: 顺序结构. 分支结构和循环结构 分支结构 单分支结构 if and 表示多个条件"与" ...

  4. python 循环赋值_计算机二级Python语言程序设计 第2章Python语言基本语法元素

    第二章学习知识导图 本章概述:本章目的是了解基础的Python相关知识 考点主要是: 1) 程序的基本语法元素:程序的格式框架.缩进.注释.变量.命名.保留字.数据类型.赋值语句.引用 2) 基本输入 ...

  5. python123io如何编辑_计算机二级python学习教程(1) 教大家如何学习python

    本来PHP还学艺不精,又报了计算机二级Python的考试,还有一个半月的时间,抓紧买了高教社的这两本书,今天正式开始学习这个语言,虽然没法和世界上最好的语言PHP相提并论,但是也值得一学. 虽然先看蓝 ...

  6. 计算机二级python什么水平_计算机二级python好过吗 通过率是多少

    计算机二级python是全国计算机等级考试于2018年9月新增的考试科目,从考试的整体情况来看,计算机二级python考试还是比较好过的,考试内容少,通过率可以达到54%以上. 计算机二级Python ...

  7. python二级考试难不难_计算机二级python考试难吗

    随着Python的快速发展,Python已经纳入了计算机的等级考试,那么计算机二级python考试难不难?让我们一起来看看吧! 计算机二级python考试难不难 全国计算机等级考试于2018年9月新增 ...

  8. c语言编程工具栏没有了,2009计算机二级C语言:工具栏,可拖动,并在被隐藏的地方显示的实现代码...

    2009计算机二级C语言:工具栏,可拖动,并在被隐藏的地方显示的实现代码 分类:计算机等级 | 更新时间:2016-07-07| 来源:中华网考试 1.在Toolbar资源中新建一个工具栏IDR_TO ...

  9. 二级c语言填空题库及答案,计算机二级C语言程序填空题及答案解析精选

    { int a[10],i,*k=&i: for(i=0:i<10:i++) scanf(\: findmin(a,10,k): printf(\: } [3.4]下面程序的功能是计算1 ...

  10. 计算机二级python分值_计算机二级python考试难吗

    计算机二级python考试难吗,程序设计,红楼梦,考试,简单,套数 计算机二级python考试难吗 易采站长站,站长之家为您整理了计算机二级python考试难吗的相关内容. 全国计算机等级考试于201 ...

最新文章

  1. 《快学 Go 语言》第 5 课 —— 神奇的切片
  2. 单个APP接入多个微信支付宝支付的一种解决方案
  3. mysql中timestamp类型数据查找中出现的问题
  4. ublox Android 定位超时,[RK3288] [Android 7.1] u-blox GPS调试
  5. tar (child): bzip2: Cannot exec: No such file or directory
  6. 7价 半导体掺杂_模电总结第一章:常用半导体器件
  7. 多用户用linux会很卡顿吗,新手学Linux系统,解决Linux系统卡顿的方法
  8. 文强+光裕+唐骏,告诉我们什么?
  9. java scala中传递变长参数
  10. 解决Apex英雄下载慢、origin平台下载打开的究极3种方法
  11. c#使用pdf控件,提示无效注册类
  12. 用c语言写一个文件加密程序,用C语言设计程序进行文件的加密
  13. Xp计算机同步时间,xp电脑时间无法同步如何解决
  14. LC.1175. Prime Arrangements
  15. 不忘初心 牢记使命 拉卡拉支付积极履行社会责任
  16. 中心极限与大数定理律的关系_CLT 中心极限定理
  17. 手把手教你安装python环境 Mac Windows
  18. 学习日志(10.21)
  19. 挂载内存文件系统pmfs
  20. 秒开路由sam1_秒开游戏

热门文章

  1. Unreal Engine4人物模板编辑与解析(1)
  2. 《数学之美》读书记录(一)
  3. 记住熊三木,一场关于文创产业“复兴十年” 的豪赌
  4. 数据湖统一存储在 OPPO 的实践
  5. ScheduledExecutorService 实现定时任务及取消任务
  6. python的help函数如何使用
  7. 拼多多推广效果不好,哪里需要改善?
  8. e4a怎么建立mysql_E4A编程MYSQL数据库操作
  9. 网页显示不正常怎么修复
  10. cnavas手绘图形库 : rough.js