内容正文:
Python语言
print()函数基本用法:
print("参数")
print(”Hello”,”World “)
input()函数基本用法:
input('提示信息')
注释基本用法:
# 单行注释的内容
"""
多行注释的内容
"""
变量:使用等号赋值以后会被创建,定义完成后可以直接使用。
例:yw_score
运算符:
算数运算符
逻辑运算符
比较运算符
数据:
数据运算、数据类型、
数据类型转换
基础
if 表达式:
语句块
if 表达式:
语句块1
else:
语句块2
if 表达式1:
语句块1
elif 表达式2:
语句块2
elif 表达式3:
语句块3
……
else:
语句块n
选择与判断
for 变量 in 序列或迭代对象:
循环体(语句块1)
else:
语句块2
while 循环条件:
循环体(语句块1)
else:
语句块2
for语句嵌套
while语句嵌套
break、continue语句的使用
循环与穷举
Python函数分类
函数
一、内置函数
print() input() int()
二、自定义函数
函数的定义
一个程序可以按不同的功能实现拆分成不同的模块,而函数就是能实现某一部分功能的代码块。
在Python中,定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号,然后在缩进块中编写函数体,函数的返回值用return语句返回。
函数
自定义函数
函数
def 函数名():
<函数体>
[return 函数值]
函数名就是标识符,命名要求与变量命名要求一样。
语句块必须缩进,预定4个空格。
函数定义,只是声明了一个函数,它不能被执行,需要调用执行。
调用的方式,就是函数名后加上小括号。
例:定义求和函数
函数
自定义函数
例:定义一个求最大值的函数
函数
def myMax(a,b): #定义一个求最大值的函数
if(a>b):
return a
else:
return b
c=myMax(3,4) #调用这个函数
print(c)
变量的作用域
函数
当程序中有多个函数时,定义的每个变量只能在一定的范围内访问,称之为变量的作用域。
按作用域划分,将变量分为局部变量和全局变量。
变量的作用域
1. 局部变量
函数
在一个函数内或者语句块内定义的变量称为局部变量。局部变量的作用域仅限于定义它的函数体或语句块中。
def fun1(a):
x=a+10
……
def fun2(a,b):
x,y=a,b
……
变量的作用域
在所有函数之外定义的变量称为全局变量,它可以在多个函数中被引用。
函数
x = 30
def fun():
global x
print('x的值是', x)
x = 20
print('全局变量x改为', x)
fun()
print('x的值是', x)
2. 全局变量
函数的参数就是使得函数个性化的一个实例。代码如下所示:
>>> def MyFirstFunction(name_city):
print(‘我喜欢的城市:’ + name_city)
运行结果如下:
>>> MyFirstFunction('南京')
我喜欢的城市:南京
>>> MyFirstFunction('上海')
我喜欢的城市:上海
在上例中,我们对函数MyFirstFunction的形参name_city赋予不同的实参“南京”、“上海”后,函数就输出不同的结果。
函数的参数和返回值
函数有了参数之后,函数的输出结果变得可变了,如果需要多个参数,函数用逗号“,”(英文状态下输入)隔开即可。
在Python中对函数参数的数量没有限制,但是定义函数参数的个数不宜太多,一般2~3个即可。在定义函数时,一般要把函数参数的意义注释清楚,便于阅读程序。
那什么是形参和实参呢?
函数小括号“()”内的参数叫形参。
而实参则是指函数在调用过程中传递进来的参数。
函数的参数和返回值
在Python中,将函数参数分为三类:位置参数、可变参数、关键字参数。
(1)位置参数
直接传入参数数据即可,如果有多个参数,位置先后顺序不能改变。
(2)可变参数。
有2种传递方式:1是直接传入参数值;2是先封装成列表(list)或元组(tuple),再在封装后的列表或元组前面添加一个星号“*”传入。
(3)关键字参数。
有2种传递方式:1是直接传入参数值;2是可以先将参数封装成字典(dict),再在封装后的字典前添加2个星号“**”传入。
函数的参数和返回值
参数传递的方式
(1)位置参数
我们调用函数时,传入参数值按照位置顺序依次赋给参数,这样的参数称为位置参数。如下所示代码:
def Sub(x,y):
return x-y
运行结果如下:
>>> Sub(100,30)
70
函数的参数和返回值
位置参数和关键字参数
上例中,Sub(x,y)函数有两个参数:x和y,这两个参数都是位置参数,调用函数时,传入的两个值按照位置顺序依次赋给参数x和y,得到的两数相减的结果是70。
如果交换了参数的位置,就会得到不同的结果,如上例中交换参数后的运行结果如下:
>>> Sub(30,100)
-70
从上面的运行结果可以看出,交换了参数顺序后的运行结果是-70,而不是我们期望的结果70。
函数的参数和返回值
位置参数和关键字参数
(2)关键字参数
关键字参数就是在函数调用的时候,通过参数名指定需要赋值的参数。通常我们在调用一个函数的时候,如果参数有多个,我们常常会混淆一个参数的顺序,达不到我们希望的效果。在Python中引入关键字参数就可解决这个潜在的问题。如下所示代码:
>>> def Subtraction(num_1,num_2):
return (num_1 - num_2)
函数的参数和返回值
位置参数和关键字参数
运行结果如下:
>>> Subtraction(34,11)
23
>>> Subtraction(11,34)
-23
>>> Subtraction(num_2=11,num_1=34)
23
函数的参数和返回值
位置参数和关键字参数
在上例中,我们调用函数Subtraction时:第1次调用函数Subtraction时,给2个参数顺序赋值34、11时得到的结果是23;第2次调用该函数时,交换了2个赋值参数的顺序得到的结果是-23,这不是所期望的结果;第3次调用该函数时,引用了关键字参数并对其分别赋值,虽然改变了顺序,但仍然得到了所期望的结果23。
函数的参数和返回值
位置参数和关键字参数
我们在定义函数时给参数赋了一个初值,这样的参数称为默认值参数。应用默认值参数的意义在于,当在函数调用的时候忘记了给函数参数赋值的时候,函数就会自动去找它的初值,使用默认值来代替,而使函数调用不会出现错误。如下所示代码:
>>> def Subtraction(num_1=99,num_2=45):
return (num_1 - num_2)
函数的参数和返回值
默认值参数
运行结果如下:
>>> Subtraction()
54
>>> Subtraction(46)
1
>>> Subtraction(46,12)
34
函数的参数和返回值
默认值参数
在上例中,函数Subtraction的功能为:返回两个数相减的结果,在定义函数时分别给2个参数num_1,num_2赋了初值99和45,分别做了3次调用:第1次调用时没有赋值,程序就引用了2个参数的默认值99,45,返回的结果是54;第2次调用时,给第1个参数赋值为46,程序就引用了第2个参数的默认值45,返回的结果是1;第3次调用时,给2个参数分别赋值为46和12,程序就没有引用函数定义的默认值,返回的结果是34。
函数的参数和返回值
默认值参数
当在定义函数参数的时候,我们不知道究竟需要多少个参数的时候,只要在参数前面加上星号“*”即可,这样的参数称为可变参数。如下所示代码:
>>> def test(*param):
print('第三个参数是:',param[2]);
print('可变参数的长度是:',len(param));
函数的参数和返回值
可变参数
运行结果如下:
>>> test('Hello',2,3,4,5,'Python')
第三个参数是: 3
可变参数的长度是: 6
在上例中,我们定义函数test的参数param为可变参数,我们在调用该函数的时候就可以根据实际的应用来输入不同长度、不同类型的参数值。
函数的参数和返回值
可变参数
有些时候,需要函数返回一些数据来报告函数实现的结果。在函数中用关键字“return”返回指定的值。如下所示代码:
>>> def Subtraction(num_1,num_2):
return (num_1 - num_2)
运行结果如下:
>>> print(Subtraction(65,23))
42
>>> Subtraction(34,11)
23
函数的参数和返回值
函数的返回值
函数中如果没有用关键字return指定返回值,则返回一个“None”对象。如下所示代码:
>>> def test_return():
print('Hello First1')
函数的参数和返回值
函数的返回值
运行结果如下:
>>> tempt = test_return()
Hello First1
>>> tempt
>>> print(tempt)
None
>>> type(tempt)
<class 'NoneType'>
函数的参数和返回值
函数的返回值
Python是动态的确定变量类型,Python没有变量,只有名字。Python可以返回多个类型的值。
如下所示代码:
>>> def back_test():
return ['Hi',2,3,4]
运行结果如下:
>>> back_test()
['Hi',2,3,4]
函数的参数和返回值
函数的返回值
在上例中,Python返回多个值是列表数据。
如下所示代码:
>>> def back_test():
return 'Hi',2,3,4
运行结果如下:
>>> back_test()
('Hi',2,3,4)
在上例中,Python返回多个值是元组数据。
函数的参数和返回值
函数的返回值
要调用一个函数,需要知道函数的名称和参数。
函数分为自定义函数和内置函数。
自定义函数需要先定义再调用,内置函数直接调用,有的内置函数是在特定的模块下,这时需要用import命令导入模块后再调用。
我们可以在交互式命令行通过help(函数名)查看函数的帮助信息。
调用函数的时候,如果传入的参数数量不对,会报TypeError的错误,同时Python会明确地告诉你参数的个数。如果传入的参数数量是对的,但参数类型不能被函数所接受,也会报TypeError的错误,同时给出错误信息。
函数的调用
函数的调用方法
允许在函数内部创建另一个函数,这种函数叫内嵌函数或者内部函数。内嵌函数的作用域在其内部,如果内嵌函数的作用域超出了这个范围就不起作用。如下所示代码:
>>> def fun1():
print('正在调用fun1()...')
def fun2():
print('正在调用fun2()...')
fun2()
函数的调用
嵌套调用
运行结果如下:
>>> fun1()
正在调用fun1()...
正在调用fun2()...
>>> fun2()
Traceback (most recent call last):
File "<pyshell#7>", line 1, in <module>
fun2()
NameError: name 'fun2' is not defined
函数的调用
嵌套调用
闭包是函数式编程的一个重要的语法结构。从表现形式上定义为,如果在一个内部函数里对一个外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就认为是闭包(closure)。如下所示代码:
def Fun_sub(a):
def Fun_sub2(b):
return a-b
return Fun_sub2
i = float(input('请输入减数:'))
j = float(input('请输入被减数:'))
print(Fun_sub(i)(j))
函数的调用
使用闭包
运行结果如下:
请输入减数:67
请输入被减数:45
22.0
>>> Fun_sub2(23)
Traceback (most recent call last):
File "<pyshell#8>", line 1, in <module>
Fun_sub2(23)
函数的调用
使用闭包
NameError: name 'Fun_sub2' is not defined
在上例中,内部函数Fun_sub2()引用了外部作用域的变量a。如果我们在全局范围内直接访问闭包Fun_sub2(),程序会报错,提示闭包函数Fun_sub2()没有定义。
在调用的时候要注意:不能在全局域内访问闭包,否则会出错。在闭包中,外部函数的局部变量对闭包中的局部变量(相当于全局变量和局部变量的关系),在闭包中能访问外部函数的局部变量,但是不能进行修改。
函数的调用
使用闭包
感谢聆听
$$