版权声明:本文为博主徐松亮的原创作品,未经允许不得转载,多谢支持!QQ:5387603
推荐点击此链接:欢迎进入徐松亮博客一站式导航搜索(随时更新)
目录
一,python简介
- 动态的、面向对象的脚本语言
- 不用编译直接运行
- micropython的兴起,使python有开发嵌入式产品的趋势,也许有一天能取代部分C语言的嵌入式地位.
- 大数据处理,黑客,测试等用途广泛的常用语言,近来势头强劲,甚至有国家把它纳入小学课程.
- 易学,易维护,强扩展性,免费,免费,免费,重要的事情说三遍.
二,开发环境搭建
- 官方网站
- 版本问题
- 目前有2.X版本和3.X版本区分.语法有区别,不兼容
- 至于2.X和3.X哪个更好,网上争论较强,但是我个人建议如果初学者直接学3.X,毕竟新的版本才是趋势.本人代码都是基于3.X
- 编辑器的选择
- 实际上官方的编辑器就可以进行日常操作,刚入门用不着在这个上面浪费太多时间.
- 推荐一个免费的编辑器,就是近期比较火的微软免费产品Visual Studio Code.至于怎么搭建集成开发环境,后续会完善本文档做介绍.
三,原创基础源码
- 因为源码中有详细注解,所以不再另加说明
#!/usr/bin/python
'''
这是多行注释
'''
"""
这也是多行注释
"""
StrLine = "--------------------"
LineNum = 1
#--------------------------------------------------
import keyword # 关键字
import random # 随机数
#import turtle # 小乌龟画图
import sys # 系统
import time # 时间
import pickle # pickle“腌菜”保存模块
#import tkinter # tkinter画图
#import zipfile # 压缩与解压缩
import threading # 多线程
import os # 系统
#import nmap # nmap工具
import platform # 平台信息
# 线程
#from threading import Thread
# xsl
#--------------------------------------------------
print (StrLine,LineNum,"-将信息输出到指定文件,并在控制台打印")
class Logger(object):
def __init__(self, fileN="xsl_basic_1_base_log.txt"):
self.terminal = sys.stdout
self.log = open(fileN, "w")
def write(self, message):
self.terminal.write(message)
self.log.write(message)
# 更新内容到磁盘,否则只是到缓存
self.log.flush()
def flush(self):
pass
sys.stdout = Logger("xsl_basic_1_base_log.txt")
#--------------------------------------------------
print (StrLine,LineNum,"-待解决问题")
LineNum+=1
print ("* logging类的应用")
print ("* 沉默获取管理员权限")
print ("* 彻底删除文件,包括删除自己")
print ("* 文件内容加密与解密")
print ("* 向服务器传送文件")
#--------------------------------------------------
print (StrLine,LineNum,"-零散知识点")
LineNum+=1
print ("* 类似C语言中的sprintf: 直接用%即可,例如:str1='%02x %02d' % (i,j)")
#--------------------------------------------------
print (StrLine,LineNum,"-查看系统信息")
LineNum+=1
print (sys.version)
print ("platform.architecture(): " , platform.architecture())
print ("platform.system(): " , platform.system())
print ("platform.version(): " , platform.version())
print ("platform.machine(): " , platform.machine())
print ("platform.python_version(): " , platform.python_version())
#--------------------------------------------------
#--------------------------------------------------
# 基本操作: 数据类型类型(数字,字符串,列表,元组,字典)
"""
数字
int 有符号整数
long 长整形
float 浮点型
complex 复数
字符串 string
1,单行可以用单引号'-',也可以用双引号"-".
2,多行要用'''-'''
3,支持转义字符'\',
4,支持乘法,常用于打印一定数量(但不能用减法与除法)
列表 list
1,相当于C语言中的数组,但python有一些方法可以实现添加删除等操作
2,.append() --> 追加
3,del --> 删除整个列表或指定元素
4,支持乘法,常用于打印一定数量(但不能用减法与除法)
元祖(只读) tuple
1,使用括号的列表,与列表的区别在于"只读"
字典 map
1,与列表的区别在于每个元素都有键值
"""
print (StrLine,LineNum,"-数据类型")
LineNum+=1
counter = 100 # 整型变量
print ("打印整型变量 :",counter)
print ("类似于C中的printf:counter = %d" % (counter))
del counter
miles = 1000.0 # 浮点型
print ("打印浮点变量 :",miles)
del miles
name = "XSL" # 字符串
print ("打印字符串乘法:",name)
name = name*10
print ("打印字符串 :",name)
del name
listname = ['item1', 'item2', 'item3'];
print ("打印列表 :",listname)
listname.append('append')
print ("打印列表(追加):",listname)
del listname[2]
print ("打印列表(追加):",listname)
del listname
tuple = ( 'runoob', 786 , 2.23, 'john', 70.2 );
print ("打印元祖 :",tuple)
del tuple
dict = {}
dict['one']="this is one"
dict[2]="This is two"
tinydict={'name':'xsl','code':824}
print ("打印字典(成员):",dict['one'],dict[2])
print ("打印字典(整体):",tinydict)
print ("打印字典(键值):",tinydict.keys())
print ("打印字典(值 ):",tinydict.values())
del tinydict
#--------------------------------------------------
print (StrLine,LineNum,"-内建函数")
LineNum+=1
print ("-----------Number类型转")
print ("int(x[,base]) 将x转换为一个整数")
print ("long(x[,base]) 将x转换为一个长整数")
print ("float(x) 将x转换为一个浮点数")
print ("complex(real[,imag]) 创建一个复数")
print ("str(x) 将对象x转换为字符串")
print ("repr(x) 将对象x转换为表达式字符串")
print ("eval(str) 用来计算在字符串中的有效Python表达式,并返回一个对象")
print ("tuple(s) 将序列 s 转换为一个元组")
print ("list(s) 将序列 s 转换为一个列表")
print ("chr(x) 将一个整数转换为一个字符")
print ("unichr(x) 将一个整数转换为Unicode字符")
print ("ord(x) 将一个字符转换为它的整数值")
print ("hex(x) 将一个整数转换为一个十六进制字符串")
print ("oct(x) 将一个整数转换为一个八进制字符串")
print ("bool(x) 将一个参数转为布尔类型 0/空-False 非0/非空-True")
print ("-----------数学函数")
print ("abs(x) 返回数字的绝对值,如abs(-10) 返回 10")
print ("ceil(x) 返回数字的上入整数,如math.ceil(4.1) 返回 5")
print ("cmp(x, y) 如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1")
print ("exp(x) 返回e的x次幂(ex),如math.exp(1) 返回2.718281828459045")
print ("fabs(x) 返回数字的绝对值,如math.fabs(-10) 返回10.0")
print ("floor(x) 返回数字的下舍整数,如math.floor(4.9)返回 4")
print ("log(x) 如math.log(math.e)返回1.0,math.log(100,10)返回2.0")
print ("log10(x) 返回以10为基数的x的对数,如math.log10(100)返回 2.0")
print ("max(x1, x2,...) 返回给定参数的最大值,参数可以为序列")
print ("min(x1, x2,...) 返回给定参数的最小值,参数可以为序列")
print ("modf(x) 返回x的整数部分与小数部分,两部分的数值符号与x相同,整数部分以浮点型表示")
print ("pow(x, y) x**y 运算后的值")
print ("round(x [,n]) 返回浮点数x的四舍五入值,如给出n值,则代表舍入到小数点后的位数")
print ("sqrt(x) 返回数字x的平方根,数字可以为负数,返回类型为实数,如math.sqrt(4)返回 2+0j")
print ("-----------随机数函数")
print ("random.choice(seq) 从序列的元素中随机挑选一个元素,比如random.choice(range(10)),从0到9中随机挑选一个整数。")
print ("random.randrange ([start,] stop [,step])从指定范围内,按指定基数递增的集合中获取一个随机数,基数缺省值为1")
print ("random.random() 随机生成下一个实数,它在[0,1)范围内")
print ("random.randint(min,max) 随机生成下一个一定范围内的整数")
print ("random.seed([x]) 改变随机数生成器的种子seed。如果你不了解其原理,你不必特别去设定seed,Python会帮你选择seed")
print ("random.shuffle(lst) 将序列的所有元素随机排序")
print ("random.uniform(x, y) 随机生成下一个实数,它在[x,y]范围内")
print ("-----------三角函数")
print ("acos(x) 返回x的反余弦弧度值")
print ("asin(x) 返回x的反正弦弧度值")
print ("atan(x) 返回x的反正切弧度值")
print ("atan2(y, x) 返回给定的 X 及 Y 坐标值的反正切值")
print ("cos(x) 返回x的弧度的余弦值")
print ("hypot(x, y) 返回欧几里德范数 sqrt(x*x + y*y)")
print ("sin(x) 返回的x弧度的正弦值")
print ("tan(x) 返回x弧度的正切值")
print ("degrees(x) 将弧度转换为角度,如degrees(math.pi/2) , 返回90.0")
print ("radians(x) 将角度转换为弧度")
print ("-----------数学常量")
print ("pi 圆周率,一般以π来表示")
print ("e 自然常数")
print ("-----------所有关键字")
print (keyword.kwlist)
print ("-----------其他")
print ("len(s) 返回一个对象的长度")
print ("set(s) 转换为可变集合")
print ("dict(d) 创建一个字典。d 必须是一个序列 (key,value)元组。")
print ("frozenset(s) 转换为不可变集合")
#--------------------------------------------------
print (StrLine,LineNum,"-运算符")
LineNum+=1
print ("算数运算符: + ,- ,* ,/ ,% ,**,//")
print ("比较运算符: ==,!=,<>,> ,< ,>=,<=")
print ("赋值运算符: = ,+=,-=,*=,/=,%=,**=,//=")
print ("按位运算符: & ,| ,^ ,- ,<< ,>>")
print ("逻辑运算符: and ,or ,not")
print ("成员运算符: in ,not in")
print ("身份运算符: is ,is not")
print ("字符串运算符: +,*,[],[:],in,not in,r/R,%")
print ("字符串格式化运算符: %c,%s,%d,%u,%o,%x,%X,%f,%e,%E,%g,%G,%p")
print (" 格式化运算符辅助: *,-,+,<sp>,#,0,%,(var),m.n")
print ("字符串复杂引用: '''")
#--------------------------------------------------
print (StrLine,LineNum,"-条件")
LineNum+=1
print ("条件语句: if-elif-else")
num = 5
if num==1:
print ("条件实例:if",num)
elif num==2:
print ("条件实例:elif",num)
else:
print ("条件实例:else")
del num
#--------------------------------------------------
print (StrLine,LineNum,"-循环")
LineNum+=1
print ("循环语句: while,for")
print ("循环控制语句: break,continue,pass")
for x in range(0,2):
print('for 实例 hello %s' % x)
del x
#--------------------------------------------------
print (StrLine,LineNum,"-打印")
LineNum+=1
# 数组赋值
for x in range(0,10):
print (x,end = '')
print ('')
del x
#--------------------------------------------------
print (StrLine,LineNum,"-时间")
LineNum+=1
ticks = time.time()
print ("Unix时间戳 : ",ticks)
localtime = time.localtime(ticks)
print (".localtime : ",localtime)
print (".asctime : ",time.asctime())
print ("延时(秒): time.sleep(x)")
del ticks
#--------------------------------------------------
print (StrLine,LineNum,"-文件")
LineNum+=1
text1="1234567890"
fo = open("xsl_basic_1_base.txt","w+")
fo.write(text1)
print ("创建xsl_basic_1_base.txt并写入字符串:",text1)
position=fo.tell();
print ("当前文件位置",position)
position = fo.seek(5,0)
str1=fo.read(5)
print ("定位到5,读取5字节数据:",str1)
fo.close();
#--------------------------------------------------
'''
print (StrLine,LineNum,"-文件读写---常规")
LineNum+=1
i=0
fi = open("xsl_basic_1_base_ascii.bin","rb")
fo = open("xsl_basic_1_base_asciiOut.bin","w+")
try:
while True:
i1=fi.read(1)
i2=fi.read(1)
print ("i1=",i1)
print ("i2=",i2)
if not i1:
break;
#i1=i1+1
#i2=i2+1
fo.write(str(i)+"\r\n")
finally:
fi.close()
fo.close()
del i
del fi
del fo
'''
#--------------------------------------------------
print (StrLine,LineNum,"-文件读写---pickle保存模块")
LineNum+=1
save_data={'name':'pickle_name','pickle_age':36}
save_file=open('pickle_test.dat','wb')
pickle.dump(save_data,save_file)
save_file.close()
print(".dump:",save_data)
del save_data
del save_file
loat_file=open('pickle_test.dat','rb')
loat_data=pickle.load(loat_file)
loat_file.close()
print(".loat:",loat_data)
del loat_data
del loat_file
#--------------------------------------------------
print (StrLine,LineNum,"-函数使用")
LineNum+=1
def xslfun(str):
print (str)
return
xslfun("正在调用一个函数!")
LineNum+=1
print (StrLine,'end')
#--------------------------------------------------
print (StrLine,LineNum,"-类的使用")
LineNum+=1
#--------------------------------------------------
print (StrLine,LineNum,"-模块的使用(模块就是函数/类/变量的组合)")
LineNum+=1
print ("turtle : 小乌龟画图")
print ("copy.copy : 浅拷贝,改变原对象影响新对象")
print ("copy.deepcopy: 深拷贝,改变原对象不影响新对象")
print ("keyword : 关键字")
#--------------------------------------------------
print (StrLine,LineNum,"-输入输出")
LineNum+=1
# 输入
key=input("\n请输入按键后按回车键退出(input)\n")
print (key)
print("\n请输入按键后按回车键退出(sys.stdin.readline(max))")
key=sys.stdin.readline(5)
print (key)
del key
# 输出
print ("输出0-9 (sys.stdout.write)")
sys.stdout.write("0123456789\n")
#--------------------------------------------------耗时前退出test
print (StrLine)
print ("xsl控制系统无错退出")
os._exit(0)
#--------------------------------------------------
sys.exit()
#--------------------------------------------------
四,原创基础源码运行结果
=============== RESTART: E:\python\xsltest\xsl_basic_1_base.py ===============
-------------------- 1 -将信息输出到指定文件,并在控制台打印
-------------------- 1 -待解决问题
* logging类的应用
* 沉默获取管理员权限
* 彻底删除文件,包括删除自己
* 文件内容加密与解密
* 向服务器传送文件
-------------------- 2 -零散知识点
* 类似C语言中的sprintf: 直接用%即可,例如:str1='%02x %02d' % (i,j)
-------------------- 3 -查看系统信息
3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)]
platform.architecture(): ('64bit', 'WindowsPE')
platform.system(): Windows
platform.version(): 10.0.17134
platform.machine(): AMD64
platform.python_version(): 3.7.0
-------------------- 4 -数据类型
打印整型变量 : 100
类似于C中的printf:counter = 100
打印浮点变量 : 1000.0
打印字符串乘法: XSL
打印字符串 : XSLXSLXSLXSLXSLXSLXSLXSLXSLXSL
打印列表 : ['item1', 'item2', 'item3']
打印列表(追加): ['item1', 'item2', 'item3', 'append']
打印列表(追加): ['item1', 'item2', 'append']
打印元祖 : ('runoob', 786, 2.23, 'john', 70.2)
打印字典(成员): this is one This is two
打印字典(整体): {'name': 'xsl', 'code': 824}
打印字典(键值): dict_keys(['name', 'code'])
打印字典(值 ): dict_values(['xsl', 824])
-------------------- 5 -内建函数
-----------Number类型转
int(x[,base]) 将x转换为一个整数
long(x[,base]) 将x转换为一个长整数
float(x) 将x转换为一个浮点数
complex(real[,imag]) 创建一个复数
str(x) 将对象x转换为字符串
repr(x) 将对象x转换为表达式字符串
eval(str) 用来计算在字符串中的有效Python表达式,并返回一个对象
tuple(s) 将序列 s 转换为一个元组
list(s) 将序列 s 转换为一个列表
chr(x) 将一个整数转换为一个字符
unichr(x) 将一个整数转换为Unicode字符
ord(x) 将一个字符转换为它的整数值
hex(x) 将一个整数转换为一个十六进制字符串
oct(x) 将一个整数转换为一个八进制字符串
bool(x) 将一个参数转为布尔类型 0/空-False 非0/非空-True
-----------数学函数
abs(x) 返回数字的绝对值,如abs(-10) 返回 10
ceil(x) 返回数字的上入整数,如math.ceil(4.1) 返回 5
cmp(x, y) 如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1
exp(x) 返回e的x次幂(ex),如math.exp(1) 返回2.718281828459045
fabs(x) 返回数字的绝对值,如math.fabs(-10) 返回10.0
floor(x) 返回数字的下舍整数,如math.floor(4.9)返回 4
log(x) 如math.log(math.e)返回1.0,math.log(100,10)返回2.0
log10(x) 返回以10为基数的x的对数,如math.log10(100)返回 2.0
max(x1, x2,...) 返回给定参数的最大值,参数可以为序列
min(x1, x2,...) 返回给定参数的最小值,参数可以为序列
modf(x) 返回x的整数部分与小数部分,两部分的数值符号与x相同,整数部分以浮点型表示
pow(x, y) x**y 运算后的值
round(x [,n]) 返回浮点数x的四舍五入值,如给出n值,则代表舍入到小数点后的位数
sqrt(x) 返回数字x的平方根,数字可以为负数,返回类型为实数,如math.sqrt(4)返回 2+0j
-----------随机数函数
random.choice(seq) 从序列的元素中随机挑选一个元素,比如random.choice(range(10)),从0到9中随机挑选一个整数。
random.randrange ([start,] stop [,step])从指定范围内,按指定基数递增的集合中获取一个随机数,基数缺省值为1
random.random() 随机生成下一个实数,它在[0,1)范围内
random.randint(min,max) 随机生成下一个一定范围内的整数
random.seed([x]) 改变随机数生成器的种子seed。如果你不了解其原理,你不必特别去设定seed,Python会帮你选择seed
random.shuffle(lst) 将序列的所有元素随机排序
random.uniform(x, y) 随机生成下一个实数,它在[x,y]范围内
-----------三角函数
acos(x) 返回x的反余弦弧度值
asin(x) 返回x的反正弦弧度值
atan(x) 返回x的反正切弧度值
atan2(y, x) 返回给定的 X 及 Y 坐标值的反正切值
cos(x) 返回x的弧度的余弦值
hypot(x, y) 返回欧几里德范数 sqrt(x*x + y*y)
sin(x) 返回的x弧度的正弦值
tan(x) 返回x弧度的正切值
degrees(x) 将弧度转换为角度,如degrees(math.pi/2) , 返回90.0
radians(x) 将角度转换为弧度
-----------数学常量
pi 圆周率,一般以π来表示
e 自然常数
-----------所有关键字
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
-----------其他
len(s) 返回一个对象的长度
set(s) 转换为可变集合
dict(d) 创建一个字典。d 必须是一个序列 (key,value)元组。
frozenset(s) 转换为不可变集合
-------------------- 6 -运算符
算数运算符: + ,- ,* ,/ ,% ,**,//
比较运算符: ==,!=,<>,> ,< ,>=,<=
赋值运算符: = ,+=,-=,*=,/=,%=,**=,//=
按位运算符: & ,| ,^ ,- ,<< ,>>
逻辑运算符: and ,or ,not
成员运算符: in ,not in
身份运算符: is ,is not
字符串运算符: +,*,[],[:],in,not in,r/R,%
字符串格式化运算符: %c,%s,%d,%u,%o,%x,%X,%f,%e,%E,%g,%G,%p
格式化运算符辅助: *,-,+,<sp>,#,0,%,(var),m.n
字符串复杂引用: '''
-------------------- 7 -条件
条件语句: if-elif-else
条件实例:else
-------------------- 8 -循环
循环语句: while,for
循环控制语句: break,continue,pass
for 实例 hello 0
for 实例 hello 1
-------------------- 9 -打印
0123456789
-------------------- 10 -时间
Unix时间戳 : 1540195124.3202357
.localtime : time.struct_time(tm_year=2018, tm_mon=10, tm_mday=22, tm_hour=15, tm_min=58, tm_sec=44, tm_wday=0, tm_yday=295, tm_isdst=0)
.asctime : Mon Oct 22 15:58:44 2018
延时(秒): time.sleep(x)
-------------------- 11 -文件
创建xsl_basic_1_base.txt并写入字符串: 1234567890
当前文件位置 10
定位到5,读取5字节数据: 67890
-------------------- 12 -文件读写---pickle保存模块
.dump: {'name': 'pickle_name', 'pickle_age': 36}
.loat: {'name': 'pickle_name', 'pickle_age': 36}
-------------------- 13 -函数使用
正在调用一个函数!
-------------------- end
-------------------- 15 -类的使用
-------------------- 16 -模块的使用(模块就是函数/类/变量的组合)
turtle : 小乌龟画图
copy.copy : 浅拷贝,改变原对象影响新对象
copy.deepcopy: 深拷贝,改变原对象不影响新对象
keyword : 关键字
-------------------- 17 -输入输出
请输入按键后按回车键退出(input)