Python笔记-8 函数
函数(Functions)
python常用的内置函数
len()
range()创建一个左闭右开区间的整数序列
print(“”)
自定义一个函数
函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。
任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
函数内容以冒号 : 起始,并且缩进。
return [表达式] 结束函数,选择性地返回一个值给调用方,不带表达式的 return 相当于返回 None。

调用函数
使用函数名直接调用,可以多次调用
参数:
1,形参(函数定义时的参数)和实参(实际传入的参数)
2,定义函数时,就会给参数设置默认值,这样的默认参数可以不传值,直接读取默认值,也可以传值,按照新传值读取,注意默认参数放在参数定义列表的后面位置
3,关键字参数
def func(var1,var2= 10,var3=20):
print (“var1 is”var1,“var2 is”var2,“var3 is”var3)
func(5)
-- 输出var1 is5,var2 is 10,var3 is 20
func(5,var2= 20,var3=30)
-- 输出var1 is5,var2 is 20,var3 is 30
返回值:
def sum_and_cheng(a,b):
return a+b,a*b
num1,num2 = sum(3,4) # 多个返回值可以用多个变量接收
print (num1)
print (num2)
补充:
当一个函数执行到return代码块的时候,就结束了
所以后面写的内容不会被执行
全局变量/局部变量
1,在函数内部定义的变量,函数外部用不了
def func():
x=20
print(“x is ”,x)
func()#调用函数可以打印
print(“x is ”,x)#打印不了
2,外部定义的变量,函数内部可以用
x=20
def func():
print(“x is ”,x)
func()#调用函数可以打印
3,应用
x= 50
def func(x):
print(“x is ”,x) #50
x= 20
print(“change x is ”,x) #20
func(x) # 鼠标放在x上 ctrl+鼠标左键 可以定位到传参位置 x=50
print(“ x is still ”,x) #50
4,全局变量 global
x= 50
def func():
global x
print(“x is ”,x) #50
x= 20
print(“change x is ”,x) #20
func() # 鼠标放在x上 ctrl+鼠标左键 可以定位到传参位置 x=50
print(“ x is still ”,x) #20
模块
在python中,一个文件(以.py为后缀名的文件)就叫做一个模块,每一个模块在python里都被看作是一个独立的文件
模块可以被其他文件调用并使用其中的方法和数据
先在根目录创建包 python package 再在package下创建 python file
可以在一个文件中写好函数,其他文件直接调用
eg:
def hello():
print("hello world !")
1,在本文件中调用,直接 hello()即可
2,在其他文件中调用,
①
import 包名.文件名 #导入模块
包名.文件名. hello()
②
from 包名.文件名 import hello #导入方法
hello()
python常用内置模块:
math模块
random模块:提供随机数。
import random
random.randint(1,100)# 取1-100范围内随机整数
random.random(1,1)# 取1-1范围内随机浮点型
random.choice(‘abcdef’)# 取随机字符
time&datetime模块:时间相关的操作,时间有三种表示方式;
print(time.time())#时间戳,自1970年0时0分0秒距离现在的秒数
print(time.strftime(“%Y-%m-%d %H:%M:%S”))#格式化
a= time.localtime() #元组 a[0]:2023 a[1]:7 a[2]:7
time.sleep(3)#沉睡三秒
datetime模块是time模块的封装
today = datetime.date.today() # 当天的日期
one_day = datetime.timedelta(days=1)
print(today - one_day) # 昨天
print(today + one_day) # 明天
os模块:文件和目录,用于提供系统级别的操作;
os.name #系统 window:nt,linux/unix:posix
os.getcwd() #获取当前路径
os.listdir() #获取当前路径下的文件
os.mkdir() #创建目录
os.path.exists() #判断文件是否存在,布尔类型
sys模块:用于提供对解释器相关的操作;
re模块:正则表达式模块
json模块:处理JSON字符串;
logging: 用于便捷记录日志且线程安全的模块;
hashlib模块:用于加密相关操作,代替了md5模块,主要是提供SHA1、SHA224、SHA256、SHA384、SHA512和MD5算法;
ConfigParser:提供了配置文件创建、解析、修改等功能。(Python2中,它的命名是驼峰式的,为ConfigParser)
shelve模块
xml模块
shutil模块
pickle模块
uuid模块:uuid.uuid4()作用是随机生成一个UUID(可能会重复)。uuid1()基于MAC地址,时间戳,随机数来生成唯一的uuid,可以保证全球范围内的唯一性。(暴露mac)
递归
①阶乘
递归调用
def num(n):
if n == 0:
return 1
else:
return n * num(n - 1)
print(num(6))
②斐波那契数列
def
fib2(q):
if
q
=
=
1
or
q
=
=
2
:
return
1
return
fib2(q
-
1
)
+
fib2(q
-
2
)
print
(fib2(
9
))