函数简介
- 函数是具有某种特定功能的代码块,可以重复使用
- 在前面讲解数据类型的时候,其实已经出现了很多 Python 内置函数了
什么是模块化程序设计
- 在进行程序设计时将一个大程序按照功能划分为若干小程序模块
- 每个小程序模块完成一个确定的功能
- 并在这些模块之间建立必要的联系,通过模块的互相协作完成整个功能
自顶向下
- 在设计较复杂的程序时,一般采用自顶向下的方法,将问题划分为几个部分,各个部分再进行细化,直到分解为较好解决问题为止
- 采用模块化设计编写程序时,不是一开始就逐条编写程序代码
- 而是首先用主程序、子程序等框架把软件的主要结构和流程描述出来
- 以功能块为单位进行程序设计,实现其求解的方法称为模块化
函数在模块化设计的作用
- 利用函数,不仅可以实现程序的模块化,使得程序设计更加简单和直观,从而提高了程序的易读性和可维护性
- 而且还可以把程序中经常用到的一些计算或操作编写成通用函数,以供随时调用
基本数据处理函数
- 向下取整:int()
-
四舍五入:round()
-
可以理解成向下取整:math.floor()
- 向上取整:math.ceil()
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from math import floor, ceil
num = 5.99
print(int(num))
print(round(num))
print(floor(num))
print(ceil(num))
num = 5.49
print(int(num))
print(round(num))
print(floor(num))
print(ceil(num))
print(type(round(num)))
print(type(floor(num)))
print(type(ceil(num)))
&简介两个函数
- str():将传入的值转换为适合人阅读的字符串形式
- repr():将传入的值转换为 Python 解释器可读取的字符串形式
-
eval 是干嘛的?
解析字符串表达式并执行,并返回一个值
# 内置函数
print(eval("dir()"))
print(eval("abs(-10)"))
# 输出结果
['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'a', 'b', 'g', 'jsons', 'l', 'x', 'y']
10
print(eval("{'name':'linux','age':age}", {"age": 123}, {"age": 24}))
# 输出结果
{'name': 'linux', 'age': 24}
print(eval("{'name':'linux','age':age}", {"age": 123}))
# 输出结果
{'name': 'linux', 'age': 123}
# 字符串转字典
jsons = "{'a':123,'b':True}"
print(type(eval(jsons)))
# 输出结果
<class 'dict'>
# 使用 locals
a = 1
g = {"a": 2, "b": 3}
l = {"b": 30, "c": 4}
print(eval("a+b+c", g, l))
# 输出结果
36
x = 10
y = 5
g = {"x": 5}
print(eval("x+1+y", g))
# 输出结果
5
print(eval("x+1+y", g))
File "<string>", line 1, in <module>
NameError: name 'y' is not defined
# 使用 globals
x = 10
g = {"x": 5}
print(eval("x+1", g))
# 输出结果
6
a = 1
b = 2
print(eval("[a,b]"))
# 输出结果
[1, 2]
print(eval("1+2"))
x = 1
print(eval('x+1'))
# 输出结果
3
2
print(eval("123"))
print(eval("True"))
print(eval("(1,2,3)"))
print(eval("[1,2,3]"))
# 输出结果
123
True
(1, 2, 3)
[1, 2, 3]