Python

 


【 I Am Starting Here 

 

笔名:DONSK

主攻方向:全球网络安全

薪酬目标:3 K 

信仰:自由生活

 


 

 

 

# 发现的问题

 

如何使用Pycharm在Windows安装第三方库?  暂且不考虑转到Linux系统进行编程,徒增不必要的负担;二回合:是否这个观点很快就站不住了,因为backtrack LINUX系统的出现;当然自己挨个安装第三方库也不是不可能,只是现在未知;

CSDN手机端有程序员的自述视频,很有意思,可以常看看;

复数没学过,需要学一下;二回合:目前还没有应用到,暂且放弃学习;

决定采用教学视频中,循序渐进的方式,进行记录;通过文章阅读得来的经验在合适位置进行补充;

下一步呢就是主攻网络,充分研究模块及其内部函数;先做一些无界面的小程序出来;看是否能做出来一些扫描,抓包,密码破解,注入,以及使用第三方模块,实现类似的功能出来;二回合:爬虫,后端等和网络安全在初期算是不绝对相关的内容,所以,还是主攻网络,研究透彻了再进行别的内容;

现在的问题是,基础内容过多,进度比较缓慢,同时由于基础内容薄弱,也缺乏实际性的操作训练,而造成整体战线较长;二回合:只能耐下性子来把基础内容研究透彻,找一些代码段进行研究,以及在此基础上的某些方向进行突破;二回合:战线较长也没啥事了,第一步还是先理解和熟悉,融会贯通它的思维方式,进而再出手也可做到游刃有余;

第三方模块,这个就是在轮子上起飞,在初期这是一个非要重要的步骤和内容;

前期完全放弃界面的编写,不再向宽学,而是向深学;二回合:是的,就没有必要考虑什么界面不界面,和编程深度本身没有什么关系;

后边有关于版本控制、正则表达式、库的使用、SQL、调试等共通性的基础内容;


 

# 前瞻

Python 的爬虫需要注意一下这个方向;

后端框架DJango、Flask需要注意一下;

对于数据分析、人工智能、机器学习、自动化测试、自动化运维,以后做个了解;

Python大版本,2x和3x需要了解下区别,在小版本内也有一些功能函数上的更新;

Python和其它语言间的区别也是挺有意思的,比如没有Main函数,对于语言间的区别以后也许可以研究一下;

暂且定为主抓网络安全这一方向的内容;

 


 

# 不便分类的内容

#!/usr/bin/python  和 #!usr/bin/env python  # 指定解释器路径,不过在PyCharm中并没有用到;

Python行缩进极为严谨,一般都是顶头写,不恰当的缩进将导致程序错误;

一行代码称为一条语句,语句的结尾一般不加分号,虽然可以加,但是不符合python的规范;

 

 

 


"""

# 解释器和IDE

CPython、IPython、PyPy、Jython、ironPython

RunNoob在线编译工具;

当前解释器最新版本3.10,需要安装Win10系统;Python官网的安装包里,包括解释器,Python运行时所需要的基础库,以及交互式运行工具,shell;

这里需要注意一下环境变量的设置;Add Python 3.x to PATH;

PyCharm可以使用社区版(Community),以后可以在拼多多买专业版(Professional)授权;专业版可能涉及到框架和库的使用;

"""

PyCharm的一些基本设置:Existing Interpreter  、 Project Interpreter--Add      # 修改解释器

File--Appearance--Theme\Fonts\Fonts Size  # IDE主题、IDE字体样式和字体大小

File--Editor--Font\Font Size\Line spacing   # 代码编辑区字体样式、字体大小和行间距

"""

打开项目方式的区别:1.this window(会覆盖当前项目,也就是关闭当前项目)2.New Window(新建一个PyCharm程序去处理内容)3.Attach(出现在当前项目列表下面)

在写代码时,有两种方式,一种是交互方式的,一种是文件方式的;在pycharm中,project console 应该就是交互开发的方式,输入一行代码就能显示相应的信息,适合于简单的程序内容或者临时测试;.py文件就是文件方式的;对于python自带的交互方式有基于命令提示符的shell和基于IDLE的shell;

 

 

"""


 

# 注释

# 单行

'''

多行注释,单引号

'''

 

"""

多行注释双引号

"""

 

一般注释# 后面至少有一个空格;


# 标识符命名习惯、关键字

小驼峰 nameSpace

大驼峰 NameSpace

下划线 name_space

下划线、字母、数字;

使用下划线进行分割标识符的多个单词是比较容易看懂的,比大小驼峰好用;也就是平日基本用小写;

总共有33个关键字,只有True、False、None首字母大写,其它关键字全部小写;

"""

关键字

False  None  True  and  as  assert  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

"""


# Debug

打断点

StepOver

输出面板分类:Debugger(显示变量和变量的细节)、Console(输出内容)

debug这个内容需要好好学一下;

 

 


# 数据类型

数值型     int(整形)float(浮点型)  #  a = 1 b = 1.1    print(type(a))  <class 'int'>

布尔型bool   True、False          #  c = True

字符型     str              #  d = '123456'

 

在其他语言中,已经赋过值的变量,不能再接受其它类型的值,但是python可以,注意这也可能会因为书写疏忽而找不到bug;

关于这些序列类型的取用没有学习,后面会有大的章节专门讲解,届时填充

它们都是用逗号隔开的

字典在其他语言成为键值对,{key : value}  一个键只能放一个值,多次放值会把前面的值冲掉,不放值会报错;

对于调用这些序列对象的函数还没有学习,比如 pop(key),删除键值对;

dict的特点就是高速查找,key值必须是不变对象,通过key计算位置的算法成为哈希算法(hash);  而list是可变的;

set也是键值对,只是没有值;

后续关于这个的熟练非常重要;

列表      list            #  e =  [10,20,30]

元组      tuple           #  f = (10,20,30)

集合      set            #  g = {10,20,30}

字典      dict            #  h={ 'name' : 'tom' , 'age' : 18 } 


 # 输出

print ( "The First"  ,  "The Second" , "The Third" )    #  同时打印多个语句,逗号会用空格代替;  输出:The First  The Secod The Third

print (1+2.0)    #  可直接输出数值计算

print ("100+200=" , 100+200)    #  输出:100 + 200 = 300

转义字符  \n  换行  \t  制表符(4个空格)

Python自带 end = ' \n '    print("something" , end= '\n') 其中的转义符可以替换成自己想要的内容

print (r 'Hello \n World')   r 即 raw,取消转义,\n 会被当作字符输出

f "(表达式)"   3.6版本新出的格式化输出方法,这个是主流方式

%04d  0004,不足用0补足,超出按实际数值

%.2f  保留两位小数

print("我的学号是:%04d"  %  student_id)    # 似乎必须得是%04d,而单纯的%4d不会填充前面的0

print("我的体重是%.2f公斤"  %  weight)

print ( "我明年的年纪是%d,我的名字是%s"  % (age+1,name))

print (f "我明年的年纪是(age+1),我的名字是(name)")

 

格式化的内容:%s  %d  %f  %c(字符)  %u(无符号十进制整数)  %o(八进制整数)  

%x  && %X (十六进制整数) %e  &&  %E  (科学计数法)  %g  &&  %G  (%f 和 %e 的简写??? 应该是浮点形式的科学计数法)

 

 


 #  输入和数据类型转换

input (" something ")  它并需要像C语言那样必须先有个变量接收,且接收的变量全部当作 字符串str 处理,后续可以再转换变量类型,它也不需要像C语言那样需要占位符

例:Password = input ( " 请输入密码:" )

 

int ( x [,base])  将 x 转换成整数,这个方括号是怎么回事?

#  例如:num = input (" numbers ")  #  type(num)  < class  'str' >  #  type (int(num))  < class  'int' >

    

float ( x )    转换成浮点数

str ( x )       转换成字符

tuple ( s )    将一个序列转换成一个元组

list ( s )    将一个序列转换成一个列表

 

eval ( str )    用来计算在字符串中的有效表达式,并返回一个对象

#  例如:str1 = '10'  str2 = '[1,2,3]'  str3 = '(100,200,300)'

#  type(eval(str1))  等等  会把这些字符串转换成整数、列表、元祖

 

complex(real [,imag])  创建一个复数,real为实部,imag为虚部

repr(x)        将对象x转换为表达式字符串

chr(x)        将一个整数转换为一个Unicode字符

ord(x)       将一个字符转换为它的ASCll整数值

hex(x)        将一个整数转换为一个十六进制字符串

oct(x)        八进制字符串

bin(x)        二进制字符串


 #  运算符

 +  -  *  

/  真除法,整数相除结果也是浮点数

//  floor除法(地板除法),截断余数且向下取整,如  8//3==2  8//3.0==2.0  -8 // 3 == -3 (负数也是向下取整)  但是有浮点数会显示浮点数结果

#  如果要截取整数,需要使用math.trunc()函数  math.trunc(1/2)  #0   math.trunc(-1/2)    #0  但是,math.trunc(-1//2)仍然遵循向下取整,即-1

#  但是math.trunc()  得到的结果都是整数值;

#  math.ceil()  是向上取整,在2.x是浮点数结果就是浮点数,3.x结果都是整数  如math.ceil(3.14)  结果是4(3.x版本)

#  math.floor()  也是向下取整,3.x结果也都是整数,和math.trunc()应该是一样了;但是现在的 // 运算是可以有浮点数结果的,和这个函数是不同的;

%  取余,即余数

**  指数,即次方  2**3  即2*2*2

()  小括号用来提高运算优先级,即(1+2)*3,先算括号内

混合运算优先级顺序:()   高于   **   高于   *   /   //  %    高于 +   -

=  赋值运算符,将=右侧的结果赋值给等号左侧的变量

多个变量赋值  num1, float , str1  =  10,  0.5,  'hello python'   逗号隔开

多个变量赋相同值  a  =  b  =  10

 

复合赋值运算符

+=  c+=a  等价于  c=c+a

-=  *=  /=  //=  %=  **=

c += 1 + 2  先算运算符右侧,右侧是任何运算符皆如此

 

比较运算符

==  判断相等,返回bool

!=  a=1,b=3  则(a != b)  为True

>

<

>=  这要判断大于或者等于是否成立,成立一个则为真

<=

 

逻辑运算符

and  与  x  and  y   二者都为真,才为真,否则为假  (a<b) and (b<c)  带上括号是良好习惯

or    或  x   or    y   有一个为真,就成立为真,同时为假,才为假

not  非  not  x     取反,not  True 返回 False,not False 返回 True    

 

数字之间的逻辑运算

1 and 2  返回2  只要有一个值为0,则结果为0,否则结果为(最后一个)非0数字 

1  or  2   返回1  0  or  3  返回3  全部为0,才为0,否则结果为(第一个)非0数字

 


 #  字符编码

UTF-8

双字节Unicode统一编码制,包含了世界所有文字;

 

 


 #  Python版本差异性

在2.6以前,print是个语句,现在是个print(" ")函数;

以前需要导入 _ _future_ _包,以适应新的特性;  如  from  _ _ future _ _  import  print_fuction

在2.x中,有ASCll  str() 类型,unicode()是单独的,3.x中,有了Unicode(UTF-8)字符串,以及一个字节类,byte和bytearrays

2.x中  运算符 / ,整数相处会舍弃小数部分,在3.x中,整数相除也会得到浮点数;

 


#  模块、包、库

每个.py文件就是一个模块;

import sys  # 导入整个模块

from  sys  import   argv,path  # 导入个别函数  ??这个写法对不对?

from  sys  import  *  # 导入模块中全部函数

 

 

 

 


 

 

#  等待处理

多行语句 +\  ;目前有问题;

数据类型;int,bool,float,complex(目前未知),String

    str = ‘123456789'

    [0:-1]     输出1到8;

    [0]     输出第一个;

    [2:5]     输出3到5

    [2:]    输出3到9;

    [1:5:2]  输出2和4,步长为2,从2且每隔一个;

    (str * 2)  输出两遍;

    (str + 'Hello')  连接字符串;

 


 

if aaa:

elif bbb:

else ccc:  

# 冒号构成代码组;??

 


 

 

 

 

posted @ 2021-10-28 00:16  DONSK  阅读(105)  评论(0)    收藏  举报