设为首页 收藏本站
查看: 1164|回复: 0

[经验分享] python-12768805

[复制链接]

尚未签到

发表于 2018-8-5 09:57:08 | 显示全部楼层 |阅读模式
  ##############python################
  一 python的简介
  1.python的优点
  (1)创始人评价:简单、优雅、明确
  简单体现在如果你的母语是英语,写python脚本就像写文章,很简单;
  优雅体现在python的格式,比如缩进来确定代码块,可避免编程人员进行复杂的嵌套;
  明确体现在解决问题的方法只有一种最优选项,而perl语言是每个问题有很多最优解,但不利于团队协作;
  (2)有强大的第三方库模块,需要实现一复杂功能,只需要调用现有的库,可快速实现功能。20多年的发展,各种库都已经完备,比如:邮件库,爬虫库......
  (3)可跨平台移植,java有Java的虚拟机,python同样;
  (4)是一种面向对象的语言;
  (5)是一种可扩展的语言(与C,C++,Java结合)
  2.python的缺点
  (1)代码执行速度慢,相比C语言,不过现在python的异步并发框架导致执行速度慢;
  (2)python是开源的编程语言,代码不能加密,当然有相应的工具可以将python代码转换为exe的二进制可执行码,但是反解码也很容易;
  3. python的应用
  (1)软件开发
  ***游戏后台、搜索、图形界面
  ***网站
  ***科学运算
  (2)系统管理
  ***脚本
  ***IT自动化工具
  ***数据分析:Hadoop处理文件(>TB) Map-Reduce,10G(matlab,R)
  二 环境配置
  1.python的安装
  (1)访问python官网,下载不同平台下的python软件;
  (2)Linux操作系统上一般iso镜像里面自带,直接通过yum安装;
  1001  vim /etc/yum.repos.d/yum.repo  ####配置yum源镜像7.0
  1002  yum clean all                 ###更新yum源
  1003  yum install python -y      #####安装python
  截图:
DSC0000.png

  注意点:
  python有 python2.x系列和python3.x系列
  (1)python2.6是一个过渡版本,既可以执行,又包含python3.0的新特性;
  (2)现在企业实战应用python版本为2.7版本;
  python2.7是python2.x系列最后一个版本,不会再有python3.0
  2.查看python版本
  [root@foundation44 ~]# python --version
  Python 2.7.5
  # 此处显示python的版本为2.7.5
  3.交互式使用python
  [root@foundation44 ~]# python
  Python 2.7.5 (default, Oct 11 2015, 17:47:16)
  [GCC 4.8.3 20140911 (Red Hat 4.8.3-9)] on linux2
  Type "help", "copyright", "credits" or "license" for more information.
  >>> print "hello"
  hello
  ***当在shell命令行输入python命令会进入一个交互式的python编程环境;
  ***python沿袭了C语言的很多用法,输出一字符串,使用print;
  ***退出python的交互式环境通过快捷键ctrl+d或者使用exit()函数;
DSC0001.png

  4.Python解释器
  (1)cpython
  (2)ipython:基于cpython,交互方式有所增强,cpython高配版
  (3)Jpython:java平台上的python解释器,将python代码编译成java字节码执行。
  (4)IronPython: 直接将python代码编译成.net的字节码
  工欲善其事,必先利其器
  (5)pypy: 对代码进行动态编译, JIT技术(  just-in-time compiler  ,即时编译器),显著提高代码执行速度。
  ####ipython#######
  从网上下载软件ipython
  shell终端中执行命令ipython试试效果;
  #######Pycharm#######
  访问pycharm官网,或者点击百度云共享链接安装;下载pychrm社区版本,安装使用,后面我们专门写一个章节,来描述pycharm常用的操作、设置以及快捷键.
  ########ipython安装################
  [root@foundation44 ~]# cd /home/kiosk/Desktop/ ####切换到ipython所在的上级目录。
  [root@foundation44 Desktop]# ls
  Advanced Bash Shell Guide.pdf  python1              rht-server.desktop
  ipython                        python1.1            Untitled Folder
  python                         rht-desktop.desktop  Untitled Folder 2
  [root@foundation44 Desktop]# cd ipython/  #####切换到ipython目录
  [root@foundation44 ipython]# yum install *  -y  #####安装ipython
  安装效果:
DSC0002.png

  #################### Pycharm安装#####################
DSC0003.png

  (1)
DSC0004.png

  (2)
DSC0005.png

  (3)
DSC0006.png

  (4)
DSC0007.png

  新建py文件:file -> new -> python file
DSC0008.png

  更改字体:file -> setting -> Appearance&Behavior ->Appearance ->Apply ->OK
DSC0009.png

  更改文件内部字体:file -> setting ->Editor ->Colors&Fonts  ->Font ->Apply ->OK
DSC00010.png

  文件开头语句添加:file -> setting ......->Apply ->OK
DSC00011.png

  添加效果
DSC00012.png

  pycharm 图形打开方式
DSC00013.png

  命令打开方式:charm
  三 python编程风格
  1 .python脚本文件
  在python交互式环境中,我定义一个变量  a=1  ,存放在内存中.。如果没有退出交互式环境,可通过  print a  打印出a的指,如果退出此次交互式环境,  a  变量存的值  1  已经被内存释放了。因此怎么在下次使用时,依旧可以查看到a变量的值呢?当然是把原先存放在内存的,存放在硬盘上即可。
  # hello.py文件的内容可通过cat hello.py来查看
  [root@foundation44 ~]# vim hello.py
  [root@foundation44 ~]# cat hello.py
  #!/usr/bin/env  python
  a = 1
  print a
  # 脚本文件一定要注意加上执行权限
  [root@foundation44 ~]# chmod +x hello.py
  [root@foundation44 ~]# python hello.py
  1
  (1)env作用:
  #!/usr/bin/python 这种写法表示直接引用系统的默认的 Python 版本,这样的话 python 程序移植到其他机器上可能运行的时候有问题,因为别人系统默认的Python版本与你预期的并不一致。
  #!/usr/bin/env python 这种写法表示,引用环境变量里面自定义的 Python 版本,
  2.字符编码种类:
  (1)ASCII:美国人发明了计算机,用二进制存储数据,英文字母加各个字符一共128个,每8位存储一个字符,2^8=256,可通过ord()数去查看字符对应的ASCII码。
  (2)Unicode:但是ASCII码忽略了中文,韩文,日文等其他国家的文字,这个时候256个字符的对应关系明显是不够用的,这时候就用两个字节对应一个文字,2**16=65536.
  (3)UTF-8:英文字符明明可以通过一个字节存储,Unicode却需要2个字节来存储,对于存储比较小的计算机来说,是浪费很多不必要占用的空间,这个时候就出现utf-8。
  ASCII码: 1字节=8位,2^8=256
  unicode:2字节=16位,2^16=65536   英文存2字节 中文存2字节
  utf-8: 英文存1字节,中文存3个字节:两个是内容本身,一个是解释
  GB2312:中文存2字节
  (4)那么什么是utf-8呢?
  简单来说就是可变长度编码格式,英文字符用ASCII码来存,而中文呢,就用utf-8来存,这个时候中文就不是两个字节存储,而是三个字节来存。
  而python编程有个要注意的问题,当python90年代还没有出现Unicode,使用时需要手动指定Unicode格式。 指定存储格式为Unicode
  >>> name_unicode = u"高山"   #####name_unicode变量名,u"高山"变量的值
  >>> type(name_unicode)  ####查看字符的类型
  <type 'unicode'>
  3.字符的编码与解码
  当存储数据到硬盘,需要考虑到节省空间的问题,所以采用utf-8格式进行存储;
  当将数据读入内存时,统一一个编码格式便于操作,采用unicode编码格式;
  内存读取:规范 Unicode        从内存读取到硬盘  #####字符编码
  存在硬盘:节省空间 utf-8      从硬盘到内存   #字符解码
  字符的编码:(encode)unicode -> utf-8
  字符的解码:(decode)utf-8 -> unicode
  # 定义一变量,编码格式为unicode
  >>> name_unicode = u"高山"   #####name_unicode变量名,u"高山"变量的值
  >>> type(name_unicode)  ####查看字符的类型
  <type 'unicode'>
  # 字符的编码,从unicode到utf-8格式
  >>> name_utf8 = named_unicode.encode ('utf-8')#####将变量用utf-8编码
  Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  NameError: name 'named_unicode' is not defined  ###报错
  >>> name_utf8 = name_unicode.encode ('utf-8')
  >>> type(name_utf8)  ####查看字符的类型
  <type 'str'>
  # 字符的解码操作,从utf-8解码到unicode编码格式
  >>> name_unicode1 =  name_utf8.decode('utf-8')#####将变量用utf-8解码
  >>> type(name_unicode1) ####查看字符的类型
  <type 'unicode'>
DSC00014.png

  4.python编程风格
  python简洁明了的编程格式,如果不按照python既定的格式进行编写程序,直接报错,所以说,刚开始编写python代码会常常报错。这里我就用C语言和python语言做简单的比较。
  (1)C语言显示  hello
  #include <stdio.h>
  void hello()
  {
  printf("hello!\n");
  }
  void main()
  {
  hello();
  }
  从上面的代码我们会发现,C代码块是通过花括号  {}  做以区别。
  [root@foundation44 ~]# vim hello.c
  [root@foundation44 ~]# yum install gcc -y
  [root@foundation44 ~]# gcc hello.c -o hello
  [root@foundation44 ~]# ls
  anaconda-ks.cfg             hello.c                             Pictures
  Desktop                     hello.py                            Public
  Documents                   initial-setup-ks.cfg                PycharmProjects
  Downloads                   Mail                                Templates
  foundation-config-post.log  Music                               Videos
  hello                       ntfs-3g-2013.1.13-5.el7.x86_64.rpm
  [root@foundation44 ~]# ./hello.c
  hello!
  (2)python显示  hello
  #!/usr/bin/env  python
  def hello():
  print "hello"
  def main ():
  hello()
  print "world"
  main()
DSC00015.png

  (3)main()根据上面的两个不同编程语言实现同一功能的分析,总结python编程初级要掌握的编程风格如下:
  1)不要在行尾加分号;
  2)每行不超过80个字符;
  3)Python语言利用缩进表示语句块的开始和退出(Off-side规则),而非使用花括号或者某种关键字。
  4)增加缩进表示语句块的开始,而减少缩进则表示语句块的退出。缩进成为了语法的一部分。
  (4)python注释
  1)单行注释:  #  常被用作单行注释符号,  #  开头的行,其右边的任何数据都会被忽略,当做是注释。
  2)块注释: 需要批量文本或代码时,使用三引号  ''' '''  .,当然三引号也可以实现多行文本格式化打印。
  四 基础概念
  1.输入与输出
  (1)输出: 告诉用户程序执行的结果
  # print + 字符串...    //字符串可为多个,逗号隔开
  # print + 数字|表达式
  [root@foundation44 ~]# python
  Python 2.7.5 (default, Oct 11 2015, 17:47:16)
  [GCC 4.8.3 20140911 (Red Hat 4.8.3-9)] on linux2
  Type "help", "copyright", "credits" or "license" for more information.
  >>> print 'hello','word'
  hello word
  >>> print 100
  100
  >>> print 100+200
  300
  >>> print "100+200=" 100+200
  File "<stdin>", line 1
  print "100+200=" 100+200
  SyntaxError: invalid syntax  ####格式错误
  >>> print "100+200=", 100+200
  100+200= 300
  (2).输入: 告诉计算机程序所需的信息
  # raw_input写入的内容赋值给变量name,输入的内容为字符类型
  >>> name = raw_input("Name:")
  Name:westos
  >>> print name
  westos
  >>> type(name)
  <type 'str'>
  # input写入的内容赋值给变量age,输入的内容为数值类型
  >>> age = input("Age:")
  Age:14
  >>>  type(age)
  File "<stdin>", line 1
  type(age)
  ^
  IndentationError: unexpected indent#####命令没有顶头写
  >>> type(age)
  <type 'int'>
  (3)小练习: 编写一程序,录入信息包括  hostname、IP、used_year、CPU、Memory、manager_name  ,如果使用年限超过10年,直接显示警告
  信息“该服务器使用年限太久!”,如果使用年限不超过10年,显示该服务器信息如下面的格式如下:
  主机信息
  主机名: hostname
  IP:IP
  使用年限:used_year
  CPU:CPU
  Memory:Memory
DSC00016.png

DSC00017.png

  3.变量
  变量是内存中的一块区域。
  (1)变量的命名: 变量名由字母,数字,下划线组成。
  >>> a=1
  >>> print a
  1
  >>> a_1 = 111
  >>> _a = 222
  >>> print _a
  222
  >>> 1a = 111
  File "<stdin>", line 1
  1a = 111
  ^
  SyntaxError: invalid syntax  //语法法错误,无效的语法,变量的首位不能是数字
  >>> a = 5
  >>> b = 3>>> print a + b
  8
  >>> print a + b +c
  Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  NameError: name 'c' is not defined   //名称错误,没有变量c
  (2)变量的特性:
  实际存储在内存上;
  变量名最好见名知意;
  变量可重新赋值;
  >>> number1 = 1
  >>> number2 = 2
  >>> number1 + number2
  3
  python中地址变量与c语言刚好相反,一条数据包含包含多个标签;
  >>> a = 1
  >>> b = 1

  >>>>  10812520

  >>>>  10812520
  面试题常见问题:
  简要描述Python的垃圾回收机制(garbage collection)。
  Python在内存中存储了每个对象的引用计数(reference count)。如果计数值变成0,那么相应的对象就会消失,分配给该对象的内存就会释放出来用作他用。
  PyObject是每个对象必有的内容,其中ob_refcnt就是做为引用计数。当一个对象有新的引用时,它的ob_refcnt就会增加,当引用它的对象被删除,它的ob_refcnt就会减少.引用计数为0时,该对象生命就结束了。
  4.运算符与表达式
  (1)赋值运算符:=, +=, -=, /=, *=, %=
  (2)算术运算符:+, -, , /, //, %, *
  >>> 1 + 1
  2
  >>> 1 - 1
  0
  >>> 1 * 3
  3
  >>> 1 / 2
  0
  >>> 1.0 / 2
  0.5
  >>> 1.0 // 2 ##整除取整数
  0.0
  >>> 1 % 2   ####整除取余
  1
  >>> 2 ** 3  ###2的三次方
  8
  >>> a33 = 3 ** 3
  >>> print a33
  27
  >>> print "a33=",a33
  a33= 27
  In [1]: 5/2
  Out[1]: 2
  In [2]: from __future__ import division ###当除法有小数点时,显示小数点后的数
  In [3]: 5/2
  Out[3]: 2.5
  In [4]: print '5 / 2 = %d' %(5/2)  ##商取整数
  5 / 2 = 2
  In [6]: print '5 / 2 = %f' %(5/2)   ##商取小数点后六位
  5 / 2 = 2.500000
  In [8]: print '5 / 2 = %.1f' %(5/2)  ##商取小数点后1位
  5 / 2 = 2.5
  In [9]: print '5 / 2 = %.11f' %(5/2)
  5 / 2 = 2.50000000000
  In [10]: print '5 / 2 = %.2f' %(5/2)
  5 / 2 = 2.50
  In [11]: print '5 / 2 = %.3f' %(5/2)
  5 / 2 = 2.500
  (3)关系运算符: >, >=, <, <=, !=, ==
  布尔值:1 < 2,返回一个布尔类型的结果
  >>> 1 < 2
  True    ###1代表True
  >>> 1 > 2
  False   ####0代表False
  (4)逻辑运算符:逻辑与and, 逻辑或or, 逻辑非not
  练习:
  编写一四则表达式,(if语句实现)
DSC00018.png

DSC00019.png

  (5)
  In [1]: num =1
  In [2]: type(num)
  Out[2]: int  ####当输入一个数时,默认为数据类型为整型
  In [3]: num =111111111111111111111111111111111111
  In [4]: type(num)
  Out[4]: long  ####当输入一个数比较大时,默认为数据类型为长整型
  In [5]: num =1
  In [6]: type(num)
  Out[6]: int
  In [7]: num =1L  ###当输入一个数后加了“L”时,手动更改数据类型为长整型
  In [8]: type(num)
  Out[8]: long
  In [9]: a=12e9
  In [10]: print a
  12000000000.0   ####12e9 表示12成以10的九次方,类型时浮点型
  In [11]: type(a)
  Out[11]: float
  In [13]: print '\hello\n'
  \hello
  In [14]: print 'hello\n'
  hello        ####\n 表示换行
  In [15]: print '\thello\n'
  hello  #####\t表示留出每行前面的几个字符
  In [16]: a='hello westos'
  In [17]: a[1]   ###给hello westos每个字符编号从0开始(包括空格),输出第1个字符
  Out[17]: 'e'
  In [18]: a[6]   ####输出第6个字符
  Out[18]: 'w'
  In [19]: a[0:5]  ####输出从0到5 个字符
  Out[19]: 'hello'
  In [29]: tuple = ()
  In [31]: type(tuple)
  Out[31]: tuple

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-546850-1-1.html 上篇帖子: 跟着Alex学习python-aska的空间 下篇帖子: Fedora上使用Python操作MongoDB学习笔记
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表