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

[经验分享] Python学习(二)Python 简介

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-11-29 15:21:16 | 显示全部楼层 |阅读模式
Python 简介

官方指南及文档
  Python2.7官方指南(中文版):http://pan.baidu.com/s/1dDm18xr
  Python3.4官方指南(中文版):http://pan.baidu.com/s/1kTrDXIZ
    初学者建议按照入门指南来学习,关键一定要按照例子写代码;这里用 Notepad++ 来快速编写、调试运行代码

  Python 帮助文档:在线 https://docs.python.org/3/    本地(安装Python时已默认保存该文档)


  

基础语法简介

运行脚本及编码
  由于Python源代码也是一个文本文件,所以,当你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码。当Python解释器读取源代码时,为了让它按UTF-8编码读取,我们通常在文件开头写上这两行:




# !/usr/bin/env python
# -*- coding:utf-8 -*-  

  第一行注释是为了告诉Linux/OS X系统,这是一个Python可执行程序,Windows系统会忽略这个注释;
  第二行注释是为了告诉Python解释器,按照UTF-8编码读取源代码,否则,你在源代码中写的中文输出可能会有乱码。
  如果你使用Notepad++进行编辑,除了要加上# -*- coding: utf-8 -*-外,中文字符串必须是Unicode字符串
  ( 字符编码 具体详见 Python学习(四)数据结构 —— str )
  

注释



1 # 注释以 # 字符起始,直至实际的行尾;代码中注释不会被Python解释;文本字符串中的#仅表示#
2 # this is the first comment
3 SPAM = 1                              # and this is the second comment
4 STRING = "# This is not a comment"    # and this is the third comment        
5 ''' 前后三个单引号可进行多行注释
6     通常是对函数、对象的说明
7     注释代码仍以 # 为主
8 '''
    (Note: 使用IDE的注释快捷键,可方便注释/去注释多行代码;如 Notepad++ 是 "Ctrl +Q" )
  

赋值



1 # " = " 用于变量赋值;变量直接赋值,无须定义变量类型; 无须定义变量的数据类型
2 a = 20
3 # n                    # 该条报错!变量在使用前必须赋值,否则会出错
4 x = y = z = 1          # 可将同一个值赋给多个变量
  
  第三行代码若执行,会报错,显示如下:

  在Python中,变量名没有类型,但对象有;变量名只是对对象的引用(内部实现为指针)

    变量命名规则及惯例
      语法:   (下划线或字母)+(任意数目的字母、数字或下划线)
        变量名必须以下划线或字母开头,而后面接任意数目的字母、数字或下划线。
      区分大小写: SPAM和spam不同
    禁止使用保留字
        命名惯例:
  以单一下划线开头的变量名(_X)不会被 from module import *语句导入
前后有下划线的变量名(_X_)是系统定义的变量名,对解释器有特殊意义
以双下划线开头,但结尾没有双下划线的变量名(__X)是类的本地(“压缩”)变量
通过交互模式运行时,只有单个下划线的变量名(_)会保存最后表达式的结果


  

简单的输入、输出



1 # 简单的输入输出
2 raw_input("Please input: ")            # Python2.x  raw_input()
3 # input("Please input: ")              # Python3.x input()
4 print "hello world"                    # Python2.x  可以不用加()
5 print("hello world")                   # Python3.x  必须要加(),不然会报错! Python3.x print() 会是空行,而Python2.x  print() 则会显示(),须注意!
6 # print("This is "Note"")              # 该条报错!需对"转义
  
  
  
  运行输入后,显示      raw_input("Please input: ")  括号内为显示的字符串,用户可输入
  通常会对用户输入赋值,   如 a = raw_input("Please input: ")
  
  运行输出后,显示       print("hello world")  括号内为输出的内容
  
  Note: Python 2.x    raw_input(Please input: )    print "hello world"   与 Python 3.x 有不同;copy 网上代码若运行报错,有可能就是版本问题
  

    关于特殊字符及Unicode



1 # 关于特殊字符及Unicode
2 print("This is \"Note\"")                #  \  转义
3 print("This is\nNote")                   #  \n 换行
4 print ("Hello"+u"\u0020"+"World")        #  u'xxxx':Python2.x unicode对象 = 直接在字符串前加u关键字
5 print("Hello\u0020World")                #  Python2.x 直接输出 Hello\u0020World ,Python3.x 会输出 Hello World
  
  字符串若包含 " 等,解释器会引起混淆,需转义;另,\n 表示换行
  从Python 3.0开始所有的字符串都支持Unicode(参考 http://www.unicode.org)

  Unicode 的先进之处在于为每一种现代或古代使用的文字系统中出现的每一个字符都提供了统一的序列号。之前,文字系统中的字符只能有 256 种可能的顺序。通过代码页分界映射。文本绑定到映射文字系统的代码页。这在软件国际化的时候尤其麻烦(通常写作 i18n —— ’i’ + 18 个字符 + ’n’ )。Unicode 解决了为所有的文字系统设置一个独立代码页的难题。




语法规则



# 例一:Fibonacci数列
a,b = 0,1                  # 变量也可这么赋值,但不建议
while b < 30:
print(b)
a,b = b,a+b        # 相当于 a=b     b = a+b            
  
  运行后如图:  该代码输出了一段 Fibonacci数列 ,使用了while的循环语句,暂时不理解无妨,仅感受下Python的语法格式
  
      需要注意的是:缩进
      Python开发者有意让违反了缩进规则的程序不能通过编译,以此来强制程序员养成良好的编程习惯。并且Python语言利用缩进表示语句块的开始和退出(Off-side规则),而非使用花括号或者某种关键字。增加缩进表示语句块的开始,而减少缩进则表示语句块的退出。缩进成为了语法的一部分。同样的如 if 语句如下:

  根据PEP的规定,必须使用4个空格来表示每级缩进(不清楚4个空格的规定如何,在实际编写中可以自定义空格数,但是要满足每级缩进间空格数相 等)。使用Tab字符和其它数目的空格虽然都可以编译通过,但不符合编码规范。支持Tab字符和其它数目的空格仅仅是为兼容很旧的的Python程序和某些有问题的编辑程序。



1 # 例二:简单if
2 a = 2
3 if a>1:
4 print("a>1")     # if 无执行语句会报错,若需实现if条件下print,参考如下
5
6 a = 0
7 if a>1:
8     print("a>1")
9 print("a!=1")    # 该语句始终会执行,因为缩进并不在if条件下
  例二 直接执行会报错,  
  
  一定需要注意语句格式上代码行的缩进,但即使不报错也不代表程序不出错,若例二中,若要求  print("a!=1")  仅在 a>1 的情况下执行
  该处代码应由



1 a = 0
2 if a>1:
3     print("a>1")
4 print("a!=1")      # 该语句始终会执行,因为缩进并不在if条件下
  改为



1 a = 0
2 if a>1:
3     print("a>1")
4     print("a!=1")    # 该语句仅if成立条件下执行
  

控制语句
         仅介绍,具体参阅后续章节
  if语句,当条件成立时运行语句块。经常与else, elif(相当于else if) 配合使用。
for语句,遍历列表、字符串、字典、集合等迭代器,依次处理迭代器中的每个元素。
while语句,当条件为真时,循环运行语句块。
try语句。与except,finally配合使用处理在程序运行中出现的异常情况。
class语句。用于定义类型。
def语句。用于定义函数和类型的方法。
pass语句。表示此行为空,不运行任何操作。
assert语句。用于程序调适阶段时测试运行条件是否满足。
with语句。Python2.6以后定义的语法,在一个场景中运行语句块。比如,运行语句块前加密,然后在语句块运行退出后解密。
yield语句。在迭代器函数内使用,用于返回一个元素。自从Python 2.5版本以后。这个语句变成一个运算符。
raise语句。制造一个错误。
import语句。导入一个模块或包。
from import语句。从包导入模块或从模块导入某个对象。
import as语句。将导入的对象赋值给一个变量。
in语句。判断一个对象是否在一个字符串/列表/元组里。
  

数据结构
         仅介绍,具体参阅后续章节


Python采用动态类型系统。在编译的时候,Python不会检查对象是否拥有被调用的方法或者属性,而是直至运行时,才做出检查。所以操作对象时可能会抛出异常。不过,虽然Python采用动态类型系统,它同时也是强类型的。Python禁止没有明确定义的操作, 比如数字加字符串。

与其它面向对象语言一样,Python允许程序员定义类型。构造一个对象只需要像函数一样调用类型即可。类型本身也是特殊类型type的对象(type类型本身也是type对象),这种特殊的设计允许对类型进行反射编程。

Python内置丰富的数据类型。与Java、C++相比,这些数据类型有效地减少代码的长度。下面这个列表简要地描述了Python内置数据类型(适用于Python 3.x):  除了各种数据类型,Python语言还用类型来表示函数、模块、类型本身、对象的方法、编译后的Python代码、运行时信息等等。因此,Python具备很强的动态性。
  
  

表达式
  仅介绍,具体参阅后续章节


Python的表达式写法与C/C++类似。只是在某些写法有所差别

算术运算符与C/C++类似。+, -, *, /, //, **, ~, %分别表示加法或者取正、减法或者取负、乘法、除法、整除、乘方、取补、取模。>>, <<表示右移和左移。&, |, ^表示二进制的AND, OR, XOR运算。>, <, ==, !=, <=, >=用于比较两个表达式的值,分别表示大于、小于、等于、不等于、小于等于、大于等于。在这些运算符里面,~, |, ^, &, <<, >>必须应用于整数。

使用and, or, not表示逻辑运算

区分列表(list)和元组(tuple)两种类型;支持列表切割(list slices)

一些Python特有的方法,如 range()  lambda 等




函数
    仅介绍,具体参阅后续章节

Python的函数支持递归、默认参数值、可变参数,但不支持函数重载。为了增强代码的可读性,可以在函数后书写“文档字符串”(Documentation Strings,或者简称docstrings),用于解释函数的作用、参数的类型与意义、返回值类型与取值范围等。可以使用内置函数help()打印出函数的使用帮助。比如: help(randint)


1 # 函数示例
2 def my_fun1():
3     print("hi")
4 my_fun1()                  # 调用函数
5 def my_fun2(a):            # 函数可带参数, 参数可为多个
6     if(a>2):
7         print(">2")
8 my_fun2(3)




对象
    仅介绍,具体参阅后续章节



1 # 对象示例
2 class User(object):                # Python2.x 需在()内加object;Python3.x 不用加object
3     def __init__(self,name):       # 类似于构造函数
4         self.name=name
5     def print_name(self):
6         print(self.name)
7  
8 u = User("John")                   # u为一 User对象
9 print(u.name)                      # 输出对象属性
10 User.print_name(u)                 # 调用print_name()函数
  
  

类库
  Python拥有一个强大的标准库。Python语言的核心只包含数字、字符串、列表、字典、文件等常见类型和函数,而由Python标准库提供了系统管理、网络通信、文本处理、数据库接口、图形系统、XML处理等额外的功能。Python标准库命名接口清晰、文档良好,很容易学习和使用。 如引用,需import,如引入算数模块 import math
Python社区提供了大量的第三方模块,使用方式与标准库类似。它们的功能无所不包,覆盖科学计算、Web开发、数据库接口、图形系统多个领域,并且大多成熟而稳定。第三方模块可以使用Python或者C语言编写。SWIG,SIP常用于将C语言编写的程序库转化为Python模块。Boost C++ Libraries包含了一组库,Boost.Python,使得以 Python 或 C++ 编写的程序能互相调用。借助于拥有基于标准库的大量工具、能够使用低级语言如C和可以作为其他库接口的C++,Python已成为一种强大的应用于其他语言与工具之间的胶水语言。
  
  
  

运维网声明 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-145014-1-1.html 上篇帖子: python进程池剖析(二) 下篇帖子: C#, Java, PHP, Python和Javascript几种语言的AES加密解密实现[转载]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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