包含编程资料、学习路线图、源代码、软件安装包等!【[点击这里]】!

一、函数
- 函数是一段可以重复使用的代码,通过传递的参数返回不同的结果,前面章节已经使用了Python定义的函数如range()、len()、input(),本章讲解用户自定义的函数。
- 对于重复使用的代码,可以编写为自定义函数以便于重复使用代码,同时提高开发人员的开发效率。函数可以分为无参函数和带参函数。
1.1无参函数
- Python的自定义无参函数并不复杂。以关键字
def
开始,后面跟函数名、小括号、冒号,最后使用retrun
退出函数。用表达式可以传递函数的返回值,如果没有返回值,则返回None
。
- 函数起名规范:函数是以字母、数据和下划线组成的字符串,但是不能以数字开发。
def add():
op1=10
op2=20
rt=op1+op2
print(op1,"+",op2,"=",rt)
return
add()
10 + 20 = 30
def add():
x=int(input("请输入x的值: "))
y=int(input("请输入y的值: "))
rt=x+y
print(x,"+",y,"=",rt)
return
add()
def add():
op1=10
op2=20
rt=op1+op2
return rt
i = add()
print(i)
def add():
x=int(input("请输入x的值: " ))
y=int(input("请输入y的值: "))
rt=x+y
return rt
i = add()
print(i)
def nine():
op1 = (1,2,3,4,5,6,7,8,9)
op2 = (1,2,3,4,5,6,7,8,9)
for i in op1:
for j in op2:
print(i,"*",j,"=",i * j)
return
nine()
使用函数时经常会出现一些错误,总结如下:
- 函数的定义要先于函数的调用,否则会出错。
- 函数体的代码是一个整体,否则会出错。
- 定义函数时要使用冒号,但调用时不可以使用冒号。
1.2带参函数
def 函数名称(形式参数列表):
代码块
return [表达式]
- 列表,简称形式列表
- 注意:形式参数实际上只是占位符,用于体现参数的个数,每个参数都没有提供具体的数值。
- 调用带参函数时,需要为每个参数传递对应的实际数值,又称实参列表。
def add(x,y):
return x+y
print(add(1,2))
3
def aa(x,y):
print(x,y)
aa(10,6)
aa(6,10)
10 6
6 10
def aa(x,y):
print(x,y)
aa(x=10,y=6)
aa(x=6,y=10)
10 6
6 10
def aa(x,y):
print(x,y)
aa(10)
aa(x=10)
aa(y=10,x=6)
def aa(x,y=1):
print(x,y)
aa(10,20)
10 20
def aa(x,y=1):
print(x,y)
aa(10)
def add(x,y):
return x + y
def subtract(x,y):
return x - y
def multiply(x,y):
return x * y
def divide (x,y):
return x * y
print("选择运算: ")
print("1、相加")
print("2、相减")
print("3、相乘")
print("4、相处")
choice = int(input("请输入你的选择(1/2/3/4): "))
num1 = int(input("输入第一个数字: "))
num2 = int(input("输入第二个数字: "))
if choice == 1:
print(num1,"+",num2,"=",add(num1,num2))
elif choice == 2:
print(num1,"-",num2,"=",subtract(num1,num2))
elif choice == 3:
print(num1,"*",num2,"=",multiply(num1,num2))
elif choice == 4:
print(num1,"/",num2,"=",divide(num1,num2))
else:
print("Error:非法输入")
选择运算:
1、相加
2、相减
3、相乘
4、相处
请输入你的选择(1/2/3/4):
2
输入第一个数字:
50
输入第二个数字:
50
50 - 50 = 0
1.3函数中变量的作用域
- 作用域是指变量在程序中的应用范围,而变量声明的位置决定它的作用域。Python按作用域分有局部变量和全局变量。
- 全局变量是指在一个模块中最高级别的变量有全局作用域,除非被删除否则存活到程序运行结束,所有函数都能访问全局变量。
- 局部变量是指定义在函数内的变量有局部作用域。依赖于定义变量的函数现阶段是否处于活动状态。调用函数时,局部变量产生,暂时存在。一旦函数执行完,局部变量将会被释放。
- 局部变量的作用域仅限于定义它的函数
- 全局变量的作用域在整个模块内都是可见的
- 在同一个函数中,不允许有同名的局部变量
- 在不同的函数中,可以有同名局部变量
- 在同一个程序中,全局变量和局部变量同名时,局部变量具有更高的 优先级
局部变量和全局变量的使用规则:
name = "Tim"
def f1():
age = 18
print(age,name)
def f2():
age = 19
print(age,name)
f1()
f2()
18 Tim
19 Tim
- 在Python中尽量不适用全局变量,因为程序的任意代码都可以自由地访问和修改全局变量的值,非常容易出现数据被意外修改的错误,而这种错误很难被发现。
global
的作用是声明变量为全局变量,即使变量定义在函数内部,加上global
后,也可以在全局范围访问。
def f1():
global name
name="Tim"
age = 18
print(age,name)
def f2():
age = 19
print(age,name)
f1()
f2()
18 Tim
19 Tim
1.4lambda函数
lambda
函数的作用是创建匿名函数,是一种声明函数的特俗方式。其中params
相当于函数接收的参数列表,expr
是函数返回值的表达式
def sum1(x,y):
return x + y
sum2=lambda x,y:x+y
print(sum1(3,4))
print(sum2(3,4))
二、内建函数
- Python除了本身的语法结构,还提供了常用的内建函数。内建函数是程序员经常用到的方法,可以提高程序的编写效率。
- 如
float()
就是内建的函数。内建函数是自动加载的,Python的解释器可以识别。它不需要导入模块,不必做任何的操作。不需要引用就可以调用。下面开始介绍常用的内建函数。
2.1abs()函数
- abs()函数能够返回一个数字的绝对值,即正数
- 语法格式:abs (x) 参数x可以是正数,也可以是负数
>>> abs(10) 10
>>> abs(-10) 10
>>> bb = -3
>>> abs(bb) 3
2.2bool()函数
- bool()函数返回值是
True
或False
,它是Boolean(布尔值)的简写,
- 将参数 x 转换为Boolean类型,当参数是数字时,0返回Flase,其他任何值都返回True。参数是字符串时,None或空字符串返回Flase。参数是空的列表、元组或字典返回False;否则返回True。
>>> bool()
>>> bool(0) False
>>> bool(-3) True
>>> bool(None)
>False
>>> bool("")
>False
>>> bool("xyz")
>True
>>> bool([11,22])
>True
2.3float()函数
float()
函数用于转换数据为float类型“浮点型”
- 参数 x 可以是字符串或数字
>>> float("25")
>25.0
>>> float(3)
>3.0
>>> float(999.2342342)
> 999.2342342
>>> float("123123123.1412312315123131")
>123123123.14123124
2.4int()
>>> int(199.99)
>199
>>> int("100")
>100
>>> int("99.9")
>Traceback (most recent call last):
>File "", line 1, in <module>
>ValueError: invalid literal
>for int() with base 10: '99.9'
>
2.5range()
- range()函数可以生成一个迭代对象
- 第一个参数 start 表示起始值,是可选参数,默认值是0
- 第二个参数 stop 表示终止值
- 第三个参数表示步长,是可选参数,可以是正数或负数,默认值是1
- 从给定的第一个参数开始,到比第二个参数值小的数字结束,常与for循环一起使用,循环执行指定数字的次数
>>> range(0,5)
>range(0, 5)
>>> list(range(0,5)) [0, 1, 2, 3, 4]
>>> range(0,30,3)
>range(0, 30, 3)
>>> list(range(30,3,-3))
>[30, 27, 24, 21, 18, 15, 12, 9, 6]
>for i in range(0,5):
>print(i)
>0
>1
>2
>3
>4
2.6sum()函数
>>> num=list(range(1,101))
>>> num
>[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
> 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
> 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
> 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100]
>>> print(sum(num))
>5050
2.7max()函数
- max()函数可以返回列表、元素或字符串中最大的元素,如果元素是英文字母,那么字母是“大于”数字的,而小写字母“大于“大写字母
>>> num = [6,2,12,7,65]
>>> max(num)
>65
>>> staring = "d,u,a,n,g,D,U,A,N,G"
>>> max(staring) 'u'
>>> max(1000,650,98,1578,9)
>1578
2.8min()函数
- min()函数返回列表、元组、或字符串中最小的元素,与max()的使用方式相反,它取得是最小值
>>> min([6,2,12,7,65])
>2
三、模块与包
- 如果编写的程序中类和函数较多时,就需要对它们进行有效得组织分类,在Python中模块和包都是组织的方式
- 。复杂度较低可以使用模块管理,复杂度则还要使用包进行管理。
3.1模块
- 模块是Python中一个重要的概念,实际上就是包含Python函数或者类的程序。
- 模块就是一个包含Python定义和语句的文件,把一组相关的函数或代码组织到一个文件中,一个文件即是一个模块。
- 模块的文件名=模块名+后缀.py。模块之间代码共享,可以相互调用,实现代码重用,并且模块中函数名称必须唯一。
3.1.1模块定义
- 下面代码演示模块的定义,保存的文件名是myModule.py
[root@localhost ~]
def add(a,b):
print(a+b)
def mul(a,b):
print(a*b)
3.1.2模块导入
- 使用模块的函数时,要先导入模块才能使用,导入有2种方式。在一行导入一个模块
- 语法格式:import 模块名
- 还可以在一行导入多个模块
- 语法格式:import 模块名1,模块名2,…
- 模块和变量一样也有作用于的区别。如果在模块的顶层导入,则作用域是全局的。
- 如果在函数中导入,则作用域是局部的,其作用域只是所在的函数中。一个模块只能被加载一次,无论它被导入多少次,可以阻止多重导入时代码被多次执行。在实际编码时,推荐直接在顶层导入。
- 导入的模块也分几种,有Python的标准库模块、第三方模块和应用程序自定义的模块。加载执行时在搜索路径中找到指定的模块,如果是第一次导入,模块将被加载并执行,之后再调用就不需要再次加载了。
>>> import sys
>>> print(sys.platform)
>linux2
>
>>> import myModule
>>> myModule.add(2,3)
>5
>>> myModule.mul(2,3)
>6
- 模块名就是定义的文件名。在调用模块中函数的语句格式是
模块名.函数名
。每个模块都有name属性,表示模块的名称。
- 如果不适用模块名,而直接用函数进行调用,就需要在导入时指定需要使用的模块的属性,一行导入一个模块属性的语法如下
语法格式:from 模块名 import 属性名
- 一行导入模块的多个属性语法如下
- 语法格式:from 模块名 import 属性名1,属性名2,…
>>> from myModule import add,mul
>>>> add(1,3) 4
>>>> mul(1,3) 3
- 示例3的代码是先导入模块myModule的add()、mul()函数,可以不适用模块名,直接使用函数名调用。另外,还可以使用as关键字为模块属性重新命名。
或
- from 模块名 import 属性名 as 属性新名称
- 语法格式:import 模块名 as 模块新名称
>>> from myModule
>import add as add1,mul as mul1
>>> add1(2,3) 5
>>> mul1(2,3) 6
>

总结
- 最后希望你编程学习上不急不躁,按照计划有条不紊推进,把任何一件事做到极致,都是不容易的,加油,努力!相信自己!
文末福利
- 最后这里免费分享给大家一份Python全套学习资料,希望能帮到那些不满现状,想提升自己却又没有方向的朋友,也可以和我一起来学习交流呀。
包含编程资料、学习路线图、源代码、软件安装包等!【[点击这里]】领取!
- ① Python所有方向的学习路线图,清楚各个方向要学什么东西
- ② 100多节Python课程视频,涵盖必备基础、爬虫和数据分析
- ③ 100多个Python实战案例,学习不再是只会理论
- ④ 华为出品独家Python漫画教程,手机也能学习
可以扫描下方二维码领取【保证100%免费】