
前言:零基础学Python:Python从0到100最新最全教程。 想做这件事情很久了,这次我更新了自己所写过的所有博客,汇集成了Python从0到100,共一百节课,帮助大家一个月时间里从零基础到学习Python基础语法、Python爬虫、Web开发、 计算机视觉、机器学习、神经网络以及人工智能相关知识,成为学习学习和学业的先行者!
欢迎大家订阅专栏:零基础学Python:Python从0到100最新最全教程!
一、函数定义及调用
1.定义函数
数学上的函数通常形如y = f(x)或者z = g(x, y)这样的形式,在y = f(x)中,f是函数的名字,x是函数的自变量,y是函数的因变量;而在z = g(x, y)中,g是函数名,x和y是函数的自变量,z是函数的因变量。Python中的函数跟这个结构是一致的,每个函数都有自己的名字、自变量和因变量。我们通常把Python中函数的自变量称为函数的参数,而因变量称为函数的返回值。
在Python中可以使用def关键字来定义函数,和变量一样每个函数也应该有一个漂亮的名字,命名规则跟变量的命名规则是一致的(赶紧想一想我们之前讲过的变量的命名规则)。
2.什么是函数
函数是组织好的,可重复使用的,用来实现单一或相关联功能的代码段,它能够提高应用的模块性和代码的重复利用率。
print(“  *  ”)
print(“ *** ”)
print("*****")
如果在一个程序的不同地方需要输出这个图形,每次使用print语言输出的做法显然不可取。
3.函数的调用
Python定义函数使用def关键字,格式如下:
def 函数名(参数列表):函数体
这是一个自定义的函数:
def printInfo():print('------------------------------------')print('         生命苦短,我用Python            ')print('------------------------------------')
定义了函数之后,想要让这些代码能够执行,需要调用函数。通过“函数名()” 即可完成调用。
# 调用刚才定义的函数
printInfo()
二、函数的参数
1.默认参数
调用函数时,如果没有传递参数,则会使用默认参数。
def printinfo( name, age = 35 ):
print(“Name:”, name)
print(“Age:”, age)
printinfo(name="miki" )
printinfo(age=9,name="miki" )
带有默认值的参数一定要位于参数列表的最后面。否则程序会报错。
2.不定长参数
如果希望定义的函数,可以计算任何两个数和,我们在定义函数的时候,让函数接收数据,这就是函数的参数。
def add2num(a, b):c = a+bprint(c)
a和b就是函数的参数,调用的时候,可以传入任何两个数。
 有时可能需要一个函数能处理比当初声明时更多的参数,这些参数叫做不定长参数,声明时不会命名。
def functionname([formal_args,] *args, **kwargs):"函数_文档字符串"function_suitereturn [expression]
- 加了星号(*)的变量args会存放所有未命名的变量参数,args为元组;
- 加**的变量kwargs会存放命名参数,即形如key=value的参数, kwargs为字典。
下面代码的运行结果是怎样的呢?
def test(a,b,*args):print(a)print(b)print(args)
test(11,22)
def test(a,b,*args):         print(a)         print(b)         print(args) 
test(11,22,33,44,55,66,77,88,99)
三、函数的返回值
函数的返回值是使用return语句来完成的。
def add2num(a, b):c = a+breturn c
函数add2num中包含return,意味着这个函数有一个返回值,其返回值就是a和b相加的结果。
四、函数的四种类型
根据函数的参数和返回值,函数可以分为四种类型:
- 无参数,无返回值的函数
- 无参数,有返回值的函数
- 有参数,无返回值的函数
- 有参数,有返回值的函数
1.无参数,无返回值的函数
def printMenu():print('--------------------------')print('      xx涮涮锅 点菜系统')print('  1.  羊肉涮涮锅')print('  2.  牛肉涮涮锅')print('  3.  猪肉涮涮锅')print('--------------------------')printMenu()
2.无参数,有返回值的函数
# 获取温度
def getTemperature():#这里是获取温度的一些处理过程#为了简单起见,先模拟返回一个数据return 24
temperature = getTemperature()
print('当前的温度为:',temperature)
3.有参数,无返回值的函数
 def test(num1,num2):result=num1+num2print('计算结果为:%d'%result)
4.有参数,有返回值的函数
 def calculateNum(num):result = 0i = 1while i<=num:result = result + ii+=1return resultresult = calculateNum(100)print('1~100的累积和为:', result)
五、变量的作用域
1.作用域
- 为了避免变量的名称发生冲突,所以Python引入了命名空间的概念。
- 命名空间指的是名称到对象的映射,类似于字典,键名是变量的名字,值是变量的值。
命名空间是相互独立存在的,而且它们被安排在某个特定的层次,把这些层次结构组合起来就是作用域。
- 本地作用域
- 函数嵌套作用域
- 文件作用域
- 内置作用域
  
2.局部变量
- 所谓局部变量,就是在函数内部定义的变量。
- 局部变量的作用域是函数内部,意味着它只在定义它的函数中有效,一旦函数结束就会消失。
3.全局变量
- 定义在函数外的拥有全局作用域。
- 全局变量可以在整个程序范围内访问。
- 如果出现全局变量和局部变量名字相同的情况,则在- 函数中访问的是局部变量。
六、标准库中的模块和函数
Python标准库中提供了大量的模块和函数来简化我们的开发工作,我们之前用过的random模块就为我们提供了生成随机数和进行随机抽样的函数;而time模块则提供了和时间操作相关的函数;上面求阶乘的函数在Python标准库中的math模块中已经有了,实际开发中并不需要我们自己编写,而math模块中还包括了计算正弦、余弦、指数、对数等一系列的数学函数。随着我们进一步的学习Python编程知识,我们还会用到更多的模块和函数。
Python标准库中还有一类函数是不需要import就能够直接使用的,我们将其称之为内置函数,这些内置函数都是很有用也是最常用的,下面的表格列出了一部分的内置函数。
| 函数 | 说明 | 
|---|---|
| abs | 返回一个数的绝对值,例如: abs(-1.3)会返回1.3。 | 
| bin | 把一个整数转换成以 '0b'开头的二进制字符串,例如:bin(123)会返回'0b1111011'。 | 
| chr | 将Unicode编码转换成对应的字符,例如: chr(8364)会返回'€'。 | 
| hex | 将一个整数转换成以 '0x'开头的十六进制字符串,例如:hex(123)会返回'0x7b'。 | 
| input | 从输入中读取一行,返回读到的字符串。 | 
| len | 获取字符串、列表等的长度。 | 
| max | 返回多个参数或一个可迭代对象中的最大值,例如: max(12, 95, 37)会返回95。 | 
| min | 返回多个参数或一个可迭代对象中的最小值,例如: min(12, 95, 37)会返回12。 | 
| oct | 把一个整数转换成以 '0o'开头的八进制字符串,例如:oct(123)会返回'0o173'。 | 
| open | 打开一个文件并返回文件对象。 | 
| ord | 将字符转换成对应的Unicode编码,例如: ord('€')会返回8364。 | 
| pow | 求幂运算,例如: pow(2, 3)会返回8;pow(2, 0.5)会返回1.4142135623730951。 | 
| print | 打印输出。 | 
| range | 构造一个范围序列,例如: range(100)会产生0到99的整数序列。 | 
| round | 按照指定的精度对数值进行四舍五入,例如: round(1.23456, 4)会返回1.2346。 | 
| sum | 对一个序列中的项从左到右进行求和运算,例如: sum(range(1, 101))会返回5050。 | 
| type | 返回对象的类型,例如: type(10)会返回int;而 type('hello')会返回str。 |