关于 if __name__=='__main__'
在
p
y
t
h
o
n
python
python代码中常常有这样一句if __name__=='__main__'
,它的作用是什么呢,下面看两个程序
第一个
p
i
n
g
.
p
y
ping.py
ping.py
# ping.py
PI = 3.14159
def ping():
print('PI:',PI)
ping()
第一个 p a n g . p y pang.py pang.py
from ping import PI
def circle():
print(PI*2**2)
cirlce()
运行第二个文件,结果如下
PI:3.14159
12.56636
我们发现输出两个文件,说明在导入
p
i
n
g
.
p
y
ping.py
ping.py的
p
i
pi
pi时,先运行了
p
i
n
g
.
p
y
ping.py
ping.py;python中__name__的值代表入口程序,而python中导入模块,会被直接运行,但是我们是不希望导入的模块被运行的,而作为直接运行的python程序的__name__变量值为__main__,所以我们在导入模块中加入if __name__=='__main__
,代表如果此文件不是直接运行的程序,就不执行它的程序;在上面的程序中,我们想要运行pang文件,我们就需要在ping中加入if __name__=='__main__
,或者两个都加;
*符号
a*b即a乘以b,a**B即a的b次方,*或 **还可接在函数定义参数之前,分别代表为一个元组或者字典;
replace()方法
它用于把字符串中指定的旧子字符替换成指定的新子字符串,如果指定count可选参数则替换指定的次数,默认全部替换,它返回的是一个替换后的字符串;
语法
S.replace(old,new[,count=S.count(old)])
参数
old为指定的旧子字符串,new为指定的新的子字符串,count可选参数为替换次数;
返回值
返回值为一个替换后的新串.S本身并没有改变;
使用
print('i am a student.'.replace(' ','@'))
print('i am a student.'.replace(' ','@',1))
# ->i@am@a@student.
# ->i@am a student.
时间
输出当前时间
import datetime
print(datetime.datetime.now())
# 2019-07-01 14:03:57.933164
控制格式输出时间
print(datetime.datetime.now().strftime("%y-%m-%d %H:%M:%S"))
# 19-07-01 14:06:17
字符串拼接
str1='world'
- 用+进行拼接
str2='hello'+str1
# ->hello world
该方法效率较低,不建议用;
- 用%进行拼接
str2='hello %s' % str1
str3='they are %s, %s, %s.' % ('Tom','Mike','Johson')
# ->they are Tom, Mike, johson.
除了元组,还可以用字典
str='There are %(name1)s, %(name2)s, %(name3)s.' % {'name1':'Tom','name2':'Mike','name3':'Johson'}
# ->There are Tom, Mike, Johson.
- 用join()方法拼接
temp = ['There are',' Tom,',' Mike,',' Johson.']
print(''.join(temp))
# ->There are Tom, Mike, Johson.
这里的列表可以换成元组
join的使用如下
str = "-";
seq = ("a", "b", "c"); # 字符串序列
print str.join( seq );
# ->a-b-c
- 用format()方法拼接如下
str='They are {}, {}, {}.'
temp=str.format('Tome','Mike','Johson')
print(temp)
# ->They are Tome, Mike, Johson.
还可以指定参数的位置
str='They are {2}, {0}, {1}.'
temp=str.format('Tom','Mike','Johson')
print(temp)
# ->They are Johson, Tom, Mike.
- 用string模块的template对象,
from string import Template
str=Template('They are ${name1}, ${name2}, ${name3}.')
# 如果缺少参数或报错,使用safe_substitute()则不会
print(str.substitute(name1='Tom',name3='Mike',name2='Johson'))
print(str.safe_substitute(name1='Tome',name2='Mike'))
# ->They are Tom, Johson, Mike.
# ->They are Tome, Mike, ${name3}.
其中substitute方法返回的是一个string,safe_substitute返回的也是一个string,其中它们的参数位置可以指定;
文件
文件读取
file=open("D:\\1.txt",'r')
print(file.read())
# 读取前9个字符
string=file.read(9)
print(string)
文件写入
file=open("D:\\1.txt",'w')
file.write("这条语句将被写入")
第三方模块的下载及安装
命令格式如下,在windows下在cmd下直接输入即可
# 格式:pip <command> [modulename]
pip install numpy
# numpy 是python的一个扩展程序库支持大量的维
# 度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
# 用于查看已经安装的第三方模块
pip list
# 查看python有哪些模块(包括标准模块和第三方模块)
help('modules')
连接数据库
import pymysql
# 打开数据库连接,参数1:主机名或IP;参数2:用户名;参数3:密码;参数4:数据库名称
db=pymysql.connect("localhost","root","root","school")
# 使用cursor()方法创建一个游标对象cursor
cursor=db.cursor()
# 使用execute()方法执行sql查询
cursor.execute("select version()")
# 使用fetchone()
data=cursor.fetchone()
print("Data version:%s " % data)
# 关闭数据库连接
db.close()
# Data version:5.5.40
创建数据库
import pymysql
db=pymysql.connect("localhost","root","root","school")
cursor=db.cursor()
cursor.execute("drop table if exists books")
sql="create table books(id int primary key,name varchar(20),price int 20)"
cursor.execute(sql)
db.close()
程序运行之后,在school中成功创建了books表,如下图所示
向数据库插入数据
批量插入数据
import pymysql
db=pymysql.connect("localhost","root","root","school")
cursor=db.cursor()
data=[
('1',"零基础学Python",'78'),
('2',"零基础学PHP",'80')
('3','零基础学Java','90')
]
try:
# 执行sql语句,插入多条数据
cursor.executemany("insert into books(id,name,price) values(%s,%s,%s)",data)
# 提交数据
db.commit()
except:
# 发生错误就回滚
db.rollback()
db.close()
anaconda
- Anaconda是一个开源的包、环境管理器,可以用于在同一个机器上安装同版本的软件包及其依赖,并能够在不同的环境之间切换
- Anaconda包括Conda、Python以及一大堆安装好的工具包,比如numpy、pandas等,Miniconda包括Conda、Python
- anaconda 是一个python的发行版,包括了python和很多常见的软件库, 和一个包管理器conda。常见的科学计算类的库都包含在里面了,使得安装比常规python安装要容易。
装了anaconda就不需要装python了。
什么是anaconda
…待续