目录
-
定义函数和调用函数
def my_function():
print('my first function')
print('not in my function')
my_function()
my_function()
用def关键字定义一个简单的函数,函数名后面至少要有一对括号,括号后面是冒号。
注意缩进,缩进的内容都属于这个函数。
函数定义之后就可以使用了,调用这个简单函数的方式为 函数名+括号
-
pass关键字
def empty():
pass
empty()
在python语法要求但实际上不需要做什么的情况下,就要用到pass。
类似C和java里面的分号空语句。
据说在开发过程中也可以用来占位
-
局部变量
def func1():
name = 'Joe'
print(name)
def func2():
print(name)
#后面都会报错
func2()
print(name)
函数内部定义的都是局部变量,不能在函数外或者被其他函数引用
-
向函数传递参数,值传递
def add(x):
x += 1
print(x)
value=5
add(value)
print(value)
定义函数的时候,在括号内加入参数。调用时也需要在括号内传入。
函数里面改变的是参数的副本,不会影响参数本身。
如果参数是对象引用,就可能改变对象里面的内容。和C与java类似。
-
多个参数,位置参数和关键字参数
def sub(arg1, arg2):
print(arg1 - arg2)
sub(5, 3)
sub(arg2=3, arg1=5)
sub(5, arg2=3)
多个参数用逗号分隔。
C和java目前只支持位置参数,即按照函数定义的参数顺序匹配传入的参数
要传关键字参数,调用函数的时候要加上 para_name = value
位置参数和关键字参数可以混合,但位置参数必须放在关键字参数前面
-
全局变量和全局常量
PI=3.14
area = 0.0
def circle_area(radis):
global area
area = (radis ** 2) * PI
print(area)
def square_area(side):
global area
area = side ** 2
print(area)
circle_area(10)
square_area(10)
全局变量在函数外定义,在函数内用global申明后,才能改变其值。
全局常量实际上是用全局变量模拟的,区别在于用全大写,而且不加global声明。
全局变量要尽量少用。
-
标准库函数和import语句
import random
def test_random():
for i in range(5):
num = random.randint(1, 100)
print(num)
test_random()
import语句写在开头,用于导入模块
这种import方式把random里面的所有函数都导入了
random模块是标准库里面的伪随机数生成模块,randint函数的两个参数表示返回的随机数范围,包括这两个参数本身,假设返回x,则 1 <= x <= 100。
-
random模块
import random
random.randint(0, 9)
random.randrange(10)
random.randrange(0, 10)
random.randrange(0, 10, 1)
random.random()
random.uniform(1.0, 10.0)
random模块下一些常用的函数 randint,randrange,random,uniform
前面四个random函数调用的效果是一样的
不带参数的random函数返回的是0.1到1.0之间(不包含1.0)的浮点数
uniform类似randint的浮点数版本,返回的是包含起止区间的浮点数
-
随机数种子
import random
random.seed(10)
random.randint(1,100)
random.randint(1,100)
random.randint(1,100)
random.randint(1,100)
用seed函数指定种子
种子相同,会生成相同的伪随机数序列
-
有返回值的函数
def sum(a,b):
return a+b
print(sum(1,2))
函数要有返回值,必须有return语句
-
返回多个值
def sum_sub(a, b):
return a+b, a-b
sum, sub = sum_sub(10, 8)
print(sum)
print(sub)
这个机制还比较方便
-
返回None
def positive_sum(a, b):
if a>0 and b>0:
return a+b
print(positive_sum(1,2))
print(positive_sum(-1,-2))
没有走到return返回语句时,函数返回None
-
math模块
import math
math.sqrt(16)
print(math.pi)
print(math.e)
标准库的math模块包含了很多数学计算函数,如平方根,三角函数,对数等等
-
在模块中存储函数
#在 mymodule.py 文件中
def myfunc():
print('my first module and func')
#在解释器中执行
import mymodule
mymodule.myfunc()
一个模块就是一个python文件
-
有条件的执行main
#在某个模块文件中
#有定义main函数
def main():
pass
#防止import的时候被main执行,模块中加入下列语句
if __name__ == "__main__":
main()
属于python最佳实践