编程篇
本篇涉及范围Python的逻辑语法、函数、类、对象、模块、包等方面
语法
基本与C++一致。
简单介绍一下不一致的地方 算了还是举例说明吧
例1:判断语句 if…elif…else
C++:
int a ,b =0;
printf("输入第一个值");
scanf("%d",a);
printf("输入第二个值");
scanf("%d",b);
if(a > b && a != b)
{
printf("第一个值较大\n");
}
else if(a < b || a == b)
{
if( ! a == b)
{
printf("第二个值比较大\n");
}
else
{
printf("两个值相同\n");
]
}
Python:
a = input("输入第一个值:");
b = input("输入第二个值:");
if a > b and a != b:
print("第一个值较大")
elif a < b or a == b:
if no a==b
print("第二个值较大")
else:
print("两个值相同")
例 2:循环语句 for 和while
C++:
#include<time.h>
#include<stdlib.h>
void main()
{
srand((int)time(0));
int a[10];
int i,all = 0;
for(i = 0;i < 10;i++)
{
a[i] = rand()%100;
}
i = 0;
while(i<10)
{
all += a[i++];
}
printf("%d",all);
}
Python:
import random
randomnumber = [random.randint(1,100) for i in range(10)];
all = 0;
print(randomnumber)
for(i in randomnumber)
all += i
print(all)
函数
关键字 def 在函数名前加 def
例 :
def fun_BMI(Name = 路人甲,Height = 1.83,Weight = 60):
...
功能:计算路人甲的BMI值
参数:Name 字符串类型名字
Height 浮点型高度
Weight 浮点型重量
...
print(Name,"的BMI值是",Weight/Heingt**2);
fun_BMI()
#由于函数设置了默认值所以在输入的时候可以省略参数
#默认值得设定也和c++中一致需要从后向前设置
fun_BMI("花猪",1.2,250)
#正常输入应该按照参数的顺序
fun_BMI(Height = 2.26,Name = “姚明”,Weight = 150)
#在使用参数关键字后就不用考虑顺序了
另外Python还支持多参数输入
*元组
例:
def fun(*Name):
print(Name);
fun("花猪","黑蛇","白虎","红狐","蓝兔")
**字典
例:
def fun(**Name):
print(Name);
fun(我 = "花猪",你 = "黑蛇",他 = "白虎", 她 = "红狐",它 = "蓝兔")
和C++中不一致的就是返回值,在Python中的返回值可以是多个且不用再函数上标识。但在函数的comments(使用说明)中一定要说明,当然不说明也能用。多个返回值会被放入一个元组中返回
类
和C++一样拥有三大特征,封装,继承,以及多态。下面也将从多个角度进行Python类和C++类的对比。
例:
C++:
class bird
{
public:
bird()//构造
{
m_Class = “我是鸟类”;
m_sPropagate = "我是卵生生物";
m_CanFly = “我会飞”;
m_CanSwim = “我会游泳”;
}
~bird()//析构
{
}
void show()
{
string t_sData = GetData();
printf(t_sData);
}
virtual string GetData()
{
string t_str;
t_str += m_Class;
t_str += m_sPropagate;
t_str += m_CanFly;
t_str += m_CanSwim;
return t_str;
}
private:
string m_class;
protected:
string m_sPropagate;//繁殖方式
public:
string m_CanFly;//会飞
string m_CanSwim;//会游泳;
};
class Swallow: public bird
{
Swallow()
{
m_Name = “我是燕子”;
}
~Swallow()
{
}
virtual string GetData()
{
string t_str = m_Name;
t_str += m_sPropagate;
t_str += m_CanFly;
t_str += m_CanSwim;
return t_str;
}
public:
string m_Name;
}
Python
class brid:
...鸟类...
def __init__(self):
...
__int__() 相当于C++中的构造
self 相当于C++中的this
__双下划线表示私有
_单下划线表示保护
...
self.__Class = “我是鸟类”;
self._Propagate = "我是卵生生物"
self.CanFly = “我会飞”
self.CanSwim = “我会游泳”
def show ():
print(getdata())
def getdata():
return __Class + _Propagate + CanFly + CanSwim
class Swallow(bird):
def __init__(self)
super.__init__() #Python中不默认调用基类构造需要使用super函数
Name = "我是燕子"
def getdata(): #Python中的重写不需要标记为虚函数只要在派生类中重名即可
return Name + _Propagate + CanFly + CanSwim
模块
在Python 中一个扩展名为 “.py” 的文件就称为一个模块,通常情况下为们把能够实现一个特定功能的代码放置在一个文件中作为一个模块,从而方便其他程序和脚本的引入和使用,另外模块也可以避免函数名和变量名冲突。
创建模块
创建一个名为“模块名.py”的文件。
导入模块
导入模块的两种方式:
import… 导入模块
from…import… 导入模块内容
import name1,name2,name3 #导入多个模块,用“,”做间隔
import modulenname as alias
...
import 导入
[modulenname] 模块名
as 起别名
[alias] 别名
...
modulenname.GetInfo() #使用modulenname中的GetInfo()函数
alias.GetInfo()
from modulenname import getInfo #导入 getInfo函数
from modulenname import funname1,funname2 #导入多个函数
from modulenname import * #导入模块中全部定义(包括变量、函数、类)
导入模块路径:
1、在当前目录。
2、到PYTHONPATH(环境变量)下的每个目录中查找。
3、到Python的默认安装陌目录下查找。
以上的三个路径保存在标准模块的sys的sys.path变量中。
若导入模块的路径不在sys.path的路径中则报错。
临时添加
import sys
sys.path.append('E:/Code/demo')
#仅在当前文件中可用
包
在Python 中提出了一个包的概念,包是一个分层次的目录结构,它将一组功能相近的模块组织在一个目录下。包简单理解就是文件夹,只不过在该文件夹下必须存在一个名为“ __ init __.py”的文件。
创建包
创建包实际上就是就是创建一个文件夹并且在该文件夹下创建一个名为“ __ init __.py”的文件。在“ __ init __.py”的文件中可以不编写任何代码,也可以编写一些Python代码,“ __ init __.py”的文件中的代码会在导入包时自动运行。“ __ init __.py”文件也是一个模块文件,模块名为对应的包名(文件夹名)。
使用包
import PackageName.ModulenName #导入完整包名+完整模块名
...
import 导入
[PackageName]包名
[ModulenName] 模块名
...
modulenname.GetInfo() #使用modulenname中的GetInfo()函数
alias.GetInfo()
from PackageName import ModulenName
#导入PackageNameb包ModulenName模块
from PackageName.ModulenName import funname1,funname2
#导入多个函数
常用的内置模块
模块名 | 描述 |
---|---|
sys | 与Python解释器及环境操作相关的标准库 |
time | 提供与时间相关的各种函数的标准库 |
os | 提供了访问操作系统服务功能的标准库 |
calendar | 提供与日期相关的各种函数标准库 |
urllib | 用于读取网上(服务器上)的数据的标准库 |
json | 用于使用JSON序列化和反序列化对象 |
re | 用与在字符串中执行正则表达式匹配和替换 |
math | 提供标准算数运算函数的标准库 |
decimal | 用于精确控制运算精度、有效位数和四舍五入的十进制运算 |
shutil | 用于高级文件操作,例如复制、移动、重命名等 |
logging | 提供了灵活的记录时间、错误、警告、调试信息等日志信息功能 |
tkinter | 使用Python进行GUI编程的标准库 |