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

[经验分享] CrazyWing:Python自动化运维开发实战 二、Python基本用法

[复制链接]

尚未签到

发表于 2018-8-3 10:38:07 | 显示全部楼层 |阅读模式
导语:
  Python编程博大精深,知识点众多,需要先整体上了解python的一些基本用法之后再去对每一个知识点细细研究,这样学习的速度会快很多。所以下面就先看一些python事先需要知道的基本知识。

交互模式编程:
  所谓交互就是跟用户也就是我们使用python的人交互,你给出指令或代码,python解释器给出结果。
  调用解释器不经过脚本文件作为参数,显示以下提示:
  

# python  
Python 2.7.10 (default, Jul 14 2015, 19:46:27)
  
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)] on darwin
  
Type "help", "copyright", "credits" or "license" for more information.
  
>>>
  

键入下列文字在Python提示符,然后按Enter键:  
>>> print "Hello, Python!"      #python2.0
  
>>> print ("Hello, Python!")    #python3.0
  
Hello, Python!
  

  强烈推荐使用ipython,其安装方式见:http://blog.51cto.com/fklinux/2046741

脚本模式编程:
  所谓脚本编程,即把python指令或代码写入文本文件当中,再给这些指令指定一个命令解释器,这个文件文件就是python脚本了。
  比如:写入如下代码在一个test.py文件
  

print "Hello, Python!"  

  运行程序:

python test.py
  

Hello, Python!  

  另一种方式执行Python脚本,修改后的test.py文件:
  #!/usr/bin/python
  print "Hello, Python!"
  运行程序:

chmod +x test.py
  

#./test.py  
Hello, Python!
  

脚本模式编程中使用中文
  python默认使用ascii码,不支持中文,使用中文需要声明支持中文的字符集,一般是utf8,方式如下:
  

#!/usr/bin/python  
#coding=utf8
  
#encoding:utf-8
  
#_*_ coding:utf-8 _*_
  
print "你好中国!"
  

  上面3种方式都可以
  为什么有这么多写法?
  python是按正则的方式检测你的字符集定义里面有没有他想要看到的东西,只要符合下面的正则即可:
  

coding[:=]\s*([-\w.]+)  

[root@wing python]# cat a.py  
#!/usr/bin/env python
  
#fdsf coding=utf8 fdaf    比如这里的fdsf fdaf是我随便乱写的 只要里面有coding utf8 等等就可以
  
print "中国你好"
  

  注:python3中已经可以直接支持中文,不需要专门指定支持中文的字符集

Python标识符:
  

1. 用来标识一个变量,函数,类,模块或其他对象的名称。  
2. 一个标识符开始以字母A到Z或a到z后跟零个或多个字母下划线(_)和数字(0〜9),Python标识符内不允许标点符号,如@、$、%等。
  
3. Python区分大小写。
  

标识符命名约定:
  

· 类名以大写字母以及所有其它标识符以小写字母。  
· 开头单个前导下划线的标识符表示由该标识符约定的意思是私有的。
  
· 开头两个前导下划线的标识符表示一个强烈的私有的标识符。
  
· 如果标识符末尾还具有两个下划线结束时,该标识符是一个语言定义的特殊名称。
  

避免用下划线作为变量名的开始:
  

因为下划线对解释器有特殊意义,而且是内建标识符所使用的符号,建议程序员避免用下划线作为变量名的开始。  
一般来讲,变量名'_xxx' 被看作是“私有的”,在模块或类外不可以使用。
  
当变量是私有的时候,用_xxx 来表示变量是很好的习惯。
  
因为变量名__xxx__对 Python 来说有特殊含义,对于普通的变量应当避免这种命名风格
  

保留字:
  保留字不可以被用作常量或变量,或任何其它标识符。所有Python关键字只包含小写字母。
  查询当前版本python中所有关键字:

  >> import keyword     #如果系统中没有这个模块,需要安装python-docs
  >> keyword.kwlist
  ['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']

  判断是否为关键字:

  >> keyword.iskeyword ('False')
  此时将返回True


行和缩进:
  学习Python时,遇到的第一个需要注意的地方是,不使用括号来表示代码的类和函数定义块或流程控制。代码块是由行缩进,这是严格执行表示方式。
  缩进位的数目是可变的,但是在块中的所有语句必须缩进相同的量。在这个例子中,两个功能块都很好使用:
  

if True:  print "True"
  
else:
  print "False"
  

  在本例中的第二块将产生一个错误:
  

if True:  print "Answer"
  print "True"
  
else:
  print "Answer"
  print "False"
  

  因此,在Python中所有的连续线缩进的空格数同样的会结成块。

多行语句:
  Python语句通常用一个新行结束。 但是,Python允许使用续行字符()来表示,该行应该继续下去(跨行)。
  例如:
  

total = (item_one +  item_two +
  item_three)
  

  包含在[],{}或()括号内的陈述并不需要使用续行符。
  例如:
  

days = ['Monday', 'Tuesday', 'Wednesday',  'Thursday', 'Friday']
  

  可以使用三引号"""或'''来打印多行语句,写什么格式就打印什么格式。
  比如:
  

print('''hello this  
is
  
a
  
test 多行语句''')
  

  打印结果如下:
  

hello this  
is
  
a
  
test 多行语句
  

继续符( \ ):
  Python 语句,一般使用换行分隔,也就是说一行一个语句。一行过长的语句可以使用反斜 杠( \ ) 分解成几行,比如:
  

if (weather_is_hot == 1) and \  
(shark_warnings == 0):
  
send_goto_beach_mesg_to_pager()
  

引号:
  Python可以使用单引号('),双引号(“)和三('''或”””)引号,以表示字符串常量,只要是同一类型的引号开始和结束的字符串。三重引号可以用于跨越多个行的字符串。
  例如:
  

word = 'word'  
sentence = "This is a sentence."
  
paragraph = """This is a paragraph. It is
  
made up of multiple lines and sentences."""
  

注释:
  单行注释:
  一个井号(#),“#”号之后字符到本行结束都是注释,Python解释器会忽略它们。比如:
  

#!/usr/bin/python  
# First comment
  
print "Hello, Python!"  # second comment
  
运行结果:
  
Hello, Python!
  

  使用三引号完成多行注释:
  

'''  
comment1
  
comment2
  
''''
  

等待用户:

方式1:raw_input()
  程序的下面一行显示的提示,按回车键退出,等待用户按下回车键:
  #!/usr/bin/python
  raw_input("Press the enter key to exit.")
  一旦用户按下键时,程序结束。这是一个很好的技巧,保持一个交互式对话,直到用户完成应用程序运行。

方式2:input()

上面两种等待用户输入的方式区别是:
  

raw_input不解释用户输入  
input会解释用户的输入
  

在一行中多个语句:
  

分号( ; ) 允许在单行写入多条语句,不管语句是否启动一个新的代码块。下面是使用分号示例:  
import sys; x = 'foo'; sys.stdout.write(x + '')
  

多个语句组作为套件:

  一组单独的语句, 在Python单一的代码块被称为序列。复杂的语句,如if, while, def, and>  标题行开始与声明(关键字),并终止与冒号(:),接着是一个或多个线构成该套件。例如:
  

if expression :  suite
  
elif expression :
  suite
  
else :
  suite
  

命令行参数:
  很多程序可以运行,它们提供有关如何运行的一些基本信息。 Python中可以使用 -h 做到这一
  点:
  

$ python -h  usage: python [option] ... [-c cmd | -m mod | file | -] [arg] ...
  Options and arguments (and corresponding environment variables):
  -c cmd : program passed in as string (terminates option list)
  -d     : debug output from parser (also PYTHONDEBUG=x)
  -E     : ignore environment variables (such as PYTHONPATH)
  -h     : print this help message and exit
  [ etc. ]
  

  你也可以设定你的脚本,它应该以这样的方式接受各种选项
  如果想对python脚本传参数,需要模块:sys
  

参数个数:len(sys.argv)  
脚本名:    sys.argv[0]
  
参数1:     sys.argv[1]
  
参数2:     sys.argv[2]
  

#vim test.py  
import sys
  
print “脚本名:”,sys.argv[0]
  
for i in range(1,len(sys.argv)):
  print “参数”,i,sys.argv
  

  
#python test.py hello world
  脚本名:test.py
  参数 1 hello
  参数 2 world
  

模块
  每一个 Python 脚本文件都可以被当成是一个模块。模块以磁盘文件的形式存在。
  当一个模块变得过大,并且驱动了太多功能的话,就应该考虑拆一些代码出来另外建一个模块。
  模块里的代码可以是一段直接执行的脚本,也可以是一堆类似库函数的代码,从而可以被别的模块导入(import)调用。模块可以包含直接运行的代码块、类定义、 函数定义或这几者的组合。
  后面我们会有专门的模块讲解

运维网声明 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.yunweiku.com/thread-545776-1-1.html 上篇帖子: 关于__name__ 和__main__的区别 下篇帖子: CrazyWing:Python自动化运维开发实战 一、初识Python-CrazyWing
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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