def <函数名>(<参数列表>):
<函数体>
return <返回值列表>
# 定义一个对整数n求阶乘的函数
def fact(n):
s = 1
for i in range(1, n+1):
s *= i
return s
n = int(input("输入一个整数:"))
print(fact(n))
<函数名>(<实际赋值参数列表>)
#定义一个对整数n求阶乘的函数
def fact(n):
s = 1
for i in range(1, n+1):
s *= i
return s
# 调用整数阶乘的函数
print(fact(20))
具体来说,函数的使用一共分为四个步骤:
\1. 函数定义
使用def保留字将一段代码定义为函数,需要确定函数的名字、参数的名字、参数的个数,使用参数名称作为形式参数(占位符)编写函数内部的功能代码。
\2. 函数调用
通过函数名调用函数功能,对函数的各个参数赋予实际值,实际值可以是实际数据,也可以是在调用函数前已经定义过的变量。
3.函数执行
函数被调用后,使用实际参数(赋予形式参数的实际值)参与函数内部代码的运行,如果有结果则进行输出。
4.函数返回
函数执行结束后,根据return保留字的指示决定是否返回结果,如果返回结果,则结果将被放置到函数被调用的位置,函数使用完毕,程序继续运行。
def <函数名>(<非可选参数列表>, <可选参数> = <默认值>):
<函数体>
return <返回值列表>
def multiply(x, y = 10):
print(x*y)
multiply(99)
# 990
multiply(99, 2)
# 198
<函数名>(<参数名> = <实际值>)
def multiply(x, y = 10):
print(x*y)
multiply(x = 99)
# 990
multiply(y = 2, x = 99)
# 198
def multiply(x, y = 10):
return x*y
s = multiply(99, 2)
print(s)
# 198
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
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'''
global <全局变量>
n = 2 #n是全局变量
def multiply(x, y = 10):
global n
return x*y*n # 使用全局变量n
s = multiply(99, 2)
print(s)
# 396
n = 2 #n是全局变量
def multiply(x, y = 10):
n = x*y
return n # 此处的n不是全局变量
s = multiply(99, 2)
print(s)
# 198
print(n) #不改变外部全局变量的值
# 2
紧耦合:尽可能合理划分功能块,功能块内部耦合紧密;
松耦合:模块间关系尽可能简单,功能块之间耦合度低。
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 = '''
三国演义 上卷
罗贯中
滚滚长江东逝水,浪花淘尽英雄。是非成败转头空。青山依旧在,几度夕阳红。
白发渔樵江渚上,惯看秋月春风。一壶浊酒喜相逢。古今多少事,都付笑谈中。
--调寄《临江仙》
第一回 宴桃园豪杰三结义 斩黄巾英雄首立功
话说天下大势,分久必合,合久必分。周末七国分争,并入于秦。及秦灭之后,
楚、汉分争,又并入于汉。汉朝自高祖斩白蛇而起义,一统天下,后来光武中兴,
传至献帝,遂分为三国。
'''
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 = '''
三国演义 上卷
罗贯中
滚滚长江东逝水,浪花淘尽英雄。是非成败转头空。青山依旧在,几度夕阳红。
白发渔樵江渚上,惯看秋月春风。一壶浊酒喜相逢。古今多少事,都付笑谈中。
--调寄《临江仙》
第一回 宴桃园豪杰三结义 斩黄巾英雄首立功
话说天下大势,分久必合,合久必分。周末七国分争,并入于秦。及秦灭之后,
楚、汉分争,又并入于汉。汉朝自高祖斩白蛇而起义,一统天下,后来光武中兴,
传至献帝,遂分为三国。
'''
def linePrint(line):
global linewidth
while len(line) > linewidth:
print(line[0:linewidth])
line = line[linewidth:]
print(line.center(linewidth, chr(12288)))
linewidth = 30 # 预定的输出宽度
def lineSplit(line):
plist = [',', '!', '?', ',', '。', '!', '?']
for p in plist:
line = line.replace(p, '\n')
return line.split('\n')
newlines = lineSplit(txt)
for newline in newlines:
linePrint(newline)
讲解了函数的基本使用方法,包括函数的定义和调用。进一步具体讲解了函数的参数传递方法和变量的作用域,包括可选参数传递、参数名称传递和函数的返回值,初步介绍了函数的作用和代码复用。通过软文的诗词风实例帮助读者理解函数的定义和使用。
古代的诗词歌赋是填词怡情,当代的诗词歌赋则是风格怡情,快来造个自己风格吧?!