Python-day2

一、模块初识

      Python的强大之处在于他有强大的标准款和三方库,几乎你想实现的功能都有相应的Python库支持。

sys

import sys
print(sys.path)#打印环境变量
print(sys.argv)#


import os #跟操作系统交互
# os.system("dir") #system执行命令,不保存结果
cmd_res = os.popen("dir").read()
print("--->",cmd_res)
os.makedir("new_dir")

os

 

import os
# cmd_res = os.system("dir")
# print("--->" , cmd_res)
cmd_res = os.popen("dir").read() #内存对象地址
print("--->" , cmd_res)
# os.makedirs("new_dir")

msg = '我是一个兵'
print(msg)
print(msg.encode(encoding='utf-8'))
print('------->',msg.encode(encoding='utf-8').decode(encoding='utf-8'))

python 的运行过程
当Python程序运行时,编译的结果是保存在位于内存中的PycodeObject中,当Python 程序运行结束时,Python解释器则将PycodeObject 写回到pyc文件中。
二次运行时程序会在硬盘中寻找pyc 并与源代码比较那个最新,如果源代码最新则重新编译,反之则直接运行。
二、数据类型
1、byte类型
2、三元运算
result = 值1 if 条件 else 值2
如果条件为真:result =
值1
如果条件为假:result = 值2
a ,b,c = 1,2,3
d = a if b <c else c
print(d)
3、整型
int 32位机器 只能存-2**31 --2**31-1,即4亿多个数字
64位机器 存 -2**63--2**63-1
long 长整型
float 浮点 包含小数点
4、布尔值
真或假
1或0

msg = '我爱你中国'
print(msg)
print(msg.encode(encoding='utf-8'))
print((msg.encode(encoding='utf-8')).decode(encoding='utf-8'))使用

5、列表的使用
names = ["zhangyang", "abc", "lucy", "xiaoming"]
names.append("leihaidong") #增加
names.insert(1,"chenronghua")#特点位置增加
names[2]= "dog" #改
#删除
# names.remove("chenronghua")
# del names[1]
#names.pop() #默认删除最后一个,输入下标

print(names)
print(names[0])
print(names[0:2])
print(names[-1])
print(names[-2:])
print(names.index("dog"))#查询位置
print(names[names.index("dog")])#查询位置
print(names.count("chenronghua")) #查询重复几个
#print(names.clear())#清空
names.reverse() #反转
print(names)
names.sort()#按ASCII顺序排序
print(names)
names2 = [1,2,3,4]
names.extend(names2)
print(names,names2)
#del names2

names = ["zhangyang", "abc", "lucy",["alex","jack"], "xiaoming"]
name2 = names.copy()
print(names)
print(name2)
names[2] = '潘金莲'
names[3][0]= "ALEXANDER"
print(names)
print(name2)

#深copy
import copy
names = ["zhangyang", "abc", "lucy",["alex","jack"], "xiaoming"]
name2 = copy.deepcopy(names)
print(names)
print(name2)
names[2] = '潘金莲'
names[3][0]= "ALEXANDER"
print(names)
print(name2)

for i in names:
print(i)


names = ["zhangyang", "abc", "lucy",["alex","jack"], "xiaoming"]
print(names[0:-1:2])
print(names[::2])

用户交互程序
# 用户交互程序
username = input("username")
passwd = input("password")
print(username,passwd)
print("-----------------------------------------")
##################
name = input("name")
age = input("age:")
job = input("job:")
salary = input("Salary")
info0 = '''
-------- info of '''+ name +'''----------
Name:''' + name + '''
Age:'''+ age + '''
jog:''' + job + '''
salary:''' + salary


info1 = '''
--------info of %s ---------
Name:%s
Age:%s
Job:%s
Salary:%s
''' %(name,name,age,job,salary)
print(info1)

# %s 是占位符 %d 代表整型

info2= '''
--------info of {_name} ---------
Name:{_name}
Age:{_age}
Job:{_jog}
Salary:{_salary}
'''.format(_name = name,
_age = age,
_jog= job,
_salary = salary)

info3= '''
--------info of {0}---------
Name:{0}
Age:{1}
Job:{2}
Salary:{3}
'''.format(name,age,job,salary)
print(info3)
#不推荐 info0(占用较多内存) 推荐使用info2 方式


password.py
#Author:Hiro
# import getpass
# username = input("username:")
# password = getpass.getpass("password:") #在pycharm不好用 只能在命令行
# print(username,password)

#####--------------------------
_username = 'alex'
_passwd = 'abc123'
username = input("username:")
password = input("password:")
if _username == username and _passwd == password:
print("Welcom user {name} login...".format(name = username))
else:
print("Invilid username or password pls try again")

while循环
#----------------------------------------
age_of_oldboy = 56
guess_age = int(input("guess age :"))
if guess_age == age_of_oldboy:
print("yes,you got it")
elif guess_age > age_of_oldboy:
print("think smaller")
else:
print("think bigger")
----------------------------------------------------------
age_of_oldboy = 56
count = 0
while count < 3:
guess_age = int(input("请输入年龄:"))
if guess_age == age_of_oldboy:
print("牛逼,答对了!")
break
elif guess_age > age_of_oldboy:
print("大哥,我没那么老吧")
else:
print("Hi,bro ,听你这么说真的很开心啊")
count += 1
else:
print("您已经答错3次,请稍后再试!")

---------------------------------------------------------
age_of_oldboy = 56
count = 0
while count < 3:
guess_age = int(input("请输入年龄:"))
if guess_age == age_of_oldboy:
print("牛逼,答对了!")
break
elif guess_age > age_of_oldboy:
print("大哥,我没那么老吧")
else:
print("Hi,bro ,听你这么说真的很开心啊")
count += 1
if count == 3:
coutinue_confirm = input("您已经输错3次,请问是否继续尝试输入年龄:")
if coutinue_confirm != 'n':
count =0
else:
print("您已经答错3次,请稍后再试!")
---------------------------------------------------------------------------------------------------------------------------------------------------------
for 循环
age_of_oldboy = 56
for i in range(3):
guess_age = int(input("请输入年龄:"))
if guess_age == age_of_oldboy:
print("牛逼,答对了!")
break
elif guess_age > age_of_oldboy:
print("大哥,我没那么老吧")
else:
print("Hi,bro ,听你这么说真的很开心啊")
else:
print("您已经答错3次,请稍后再试!")
--------------------------------------------------------------------------------------------------------------
for i in range(0,10,2):
print("loop",i)


三、.pyc是什么

1. Python是一门解释型语言?


我初学Python时,听到的关于Python的第一句话就是,Python是一门解释性语言,我就这样一直相信下去,直到发现了*.pyc文件的存在。如果是解释型语言,那么生成的*.pyc文件是什么呢?c应该是compiled的缩写才对啊!

为了防止其他学习Python的人也被这句话误解,那么我们就在文中来澄清下这个问题,并且把一些基础概念给理清。

高级语言程序运行的时候,需要翻译机来翻译成计算机能读懂的语言。这个过程分为二类  1、编译   2、解释

编译型语言在程序执行时,先通过翻译器编译成机器先执行一个编译过程,把程序编译成机器语言,然后直接执行。典型的就是C语言

解释型语言就没有这个编译的过程,而是在程序运行的时候,通过解释器对程序逐行作出解释,然后直接运行,最典型的例子是Ruby。

Java来举例,Java首先是通过编译器编译成字节码文件,然后在运行时通过解释器给解释成机器文件。所以我们说Java是一种先编译后解释的语言。

2. Python到底是什么 

其实Python和Java/C#一样,也是一门基于虚拟机的语言,我们先来从表面上简单地了解一下Python程序的运行过程吧。

当我们在命令行中输入python hello.py时,其实是激活了Python的“解释器”,告诉“解释器”:你要开始工作了。可是在“解释”之前,其实执行的第一项工作和Java一样,是编译。

熟悉Java的同学可以想一下我们在命令行中如何执行一个Java的程序:

javac hello.java

java hello

 

只是我们在用Eclipse之类的IDE时,将这两部给融合成了一部而已。其实Python也一样,当我们执行python hello.py时,他也一样执行了这么一个过程,所以我们应该这样来描述Python,Python是一门先编译后解释的语言。


3. Python到底是什么 

其实Python和Java/C#一样,也是一门基于虚拟机的语言,我们先来从表面上简单地了解一下Python程序的运行过程吧。

当我们在命令行中输入python hello.py时,其实是激活了Python的“解释器”,告诉“解释器”:你要开始工作了。可是在“解释”之前,其实执行的第一项工作和Java一样,是编译。

熟悉Java的同学可以想一下我们在命令行中如何执行一个Java的程序:

javac hello.java

java hello

 

只是我们在用Eclipse之类的IDE时,将这两部给融合成了一部而已。其实Python也一样,当我们执行python hello.py时,他也一样执行了这么一个过程,所以我们应该这样来描述Python,Python是一门先编译后解释的语言。

在说这个问题之前,我们先来说两个概念,PyCodeObject和pyc文件。

我们在硬盘上看到的pyc自然不必多说,而其实PyCodeObject则是Python编译器真正编译成的结果。我们先简单知道就可以了,继续向下看。

4、python 的运行过程。

当python程序运行时,编译的结果则是保存在位于内存中的PyCodeObject中,当Python程序运行结束时,Python解释器则将PyCodeObject写回到pyc文件中。

当python程序第二次运行时,首先程序会在硬盘中寻找pyc文件,如果找到,则直接载入,否则就重复上面的过程。

所以我们应该这样来定位PyCodeObject和pyc文件,我们说pyc文件其实是PyCodeObject的一种持久化保存方式。

posted on 2019-12-24 23:35  Hiro_R  阅读(348)  评论(0)    收藏  举报

导航