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

[经验分享] Python学习笔记 02 Python基础

[复制链接]

尚未签到

发表于 2015-4-22 09:04:17 | 显示全部楼层 |阅读模式
  1、语句和语法
  #号表示之后为python的注释。
  换行(\n)是标准的行分隔符(通常一个语句一行)。
  反斜线(\)继续上一行,在使用闭合操作符(小括号,中括号,大括号,三引号)时,单一语句可以跨多行。
  分号(;)将2个句子连载一行,可以用于同一行书写多个语句。
  冒号(:)将代码块的头和体分开,像if,while,def,class这样的复合语句,首行以关键字开始,以冒号(:)结束,该行之后的一行或多行代码构成代码组。
  语句(代码块)采用缩进块的方式体现。
  Python文件以模块的形式组织,模块里的代码可以是一段直接执行的脚本,也可以是一堆类似库函数的代码,从而可以被别的模块导入(import)调用。
  2、变量赋值
  Python语言中,=是主要的赋值操作符。在Python中,对象是通过引用传递的。在赋值时,不管这个对象是新创建的,还是一个已经存在的,都是将该对象的引用(并不是值)赋值给变量。Python的赋值语句不会返回值。



>>> x = 1
>>> y = (x = x + 1)
SyntaxError: invalid syntax
  链式赋值没问题,比如:



>>> y = x = x+1
>>> x, y
(2, 2)
  等号可以和一个算术操作符组合在一起,将计算结果重新赋值给左边的变量。这被称为增量赋值。



>>> x += 1
  可以使用的增量赋值操作符:
  +=、-=、*=、/=、%=、**=、=、&=、^=、|=,但是不支持x++或—x这样的前置、后置自增/自减运算。
  Python支持多重赋值,多元赋值。



>>> x += 1
>>> x = y = z = 1
>>> x, y, z = 1, 2, 'a string'
  建议加上小括号,提高可读性。



(x, y, z) = (1, 2, 'a string')
  Python的多元赋值可以实现无需中间变量交换两个变量的值。



>>> x, y = 1, 2
>>> x, y = y, x
>>> x, y
(2, 1)
  3、标识符
  (1)第一字符必须是字母或下划线(_)。
  (2)剩下的字符可以是字母或数字或下划线。
  (3)大小写敏感。
  Keyword模块中同时包含了一个关键字列表和一个iskeyword()函数。



>>> import keyword
>>> keyword.iskeyword('while')
True
  Python不支持重载标识符,任何时刻都只有一个名字绑定。
  built-in 是__builtins__模块的成员,可以看做任意python模块的全局变量,不要使用。
  __xxx 不用‘from module import *’导入
  __xxx__系统定义的名称
  __xxx 类的私有成员变量
  核心风格:避免使用__作为变量的开始,除非是类的私有成员变量。
  4、基本风格
  文档:pyhton通过__doc__特别变量动态获得,类,模块,函数,第一个没有赋值的字符串可以通过属性:obj.__doc__来进行访问,其中obj是一个模块、类、函数的名字。
  模块结构和布局
  (1)起始行。通常只有在类Unix环境下才使用起始行,有起始行就能够仅输入脚本名字来执行脚本,无需调用解释器。
  (2)模块文档。简要介绍模块功能及重要全局变量的含义,模块外可通过module.__doc__访问这些内容。
  (3)模块导入。
  (4)变量定义。这里指的是全局变量。尽量用局部变量代替僵尸变量。
  (5)类定义语句。所有的类都需要在这里定义。当模块被导入时class语句会被执行。类也就会被定义。类的文档变量是class.__doc__。
  (6)函数定义语句。此处定义的函数可以通过module.function()在外部被访问到,当模块被导入def语句会被执行,函数也就都会定义好,函数的文档变量是function.__doc__。
  (7)主程序。
  每个模块中都最好用__name__=="__main__"来检查进行代码回归测试。
  时刻记住:所有的模块都有能力执行python,没有缩进的代码行在模块被导入的时候会被执行,不管是不是真的要执行,都有这个特性,比较安全的方式几乎所有的功能代码都放到函数当中。
  5、内存管理
  (1)变量无须事先声明;
  (2)变量无须指定类型;
  (3)程序员不用关心内存管理;
  (4)变量名会被“回收”;
  (5)del语句能够直接 持释放资源;
  引用计数:当对象被创建并赋值给变量时,该对象的引用计数就被设置为1。当同一个对象又被赋值给其他变量时,或作为参数传递给函数、方法或类实例时,或者被赋值为一个窗口对象的成员时,该对象的一个新的引用,或者称作别名,就被创建了(引用计数自动加1)。当对象的引用被销毁时,引用计数会减小。当变量被赋值给另外一个对象时,原对象的引用计数也会自动减1。
  (1)对象被创建:




>>> x = 3.14
  (2)或另外的别名被创建:



>>>y = x
  
  (3)或被作为参数传递给函数(新的本地引用)



>>>foobar(x)
  (4)或成为容器对象的一个元素:



>>>mlist = [133,x,'xyz']
  del语句:del obj1, obj2, …, objN,从现在的名称空间中删除对象,引用计数减1。
  (1)对象销毁时候,引用计数会减少:引用离开作用范围,函数运行结束、
  (2)



>>>foo = 'xyz' #当对象“xyz”被创建,它引用计数为1
>>>bar = foo #增加个别名,引用增加为2
>>>foo = 123 #xyz对象减一,自动变成1
  (3)对象别名被显式删除或销毁:



>>>del y
  (4)对象的一个别名被赋值给其他对象:



>>>x = 123
  (5)对象从一个窗口对象中移除:



>>>mylist.remove(x)
  (6)窗口对象本身被销毁:



>>>del mylist  #或者离开其作用范围。
  6、垃圾收集
  解释器跟踪对象的引用计数,垃圾收集器负责释放内存。它用来寻找引用计数为0的对象。也负责检查那些虽然引用计数大于0,但也应该被销毁的对象。
  7、Python程序示例



#!/usr/bin/env python

'makeTextFile.py -- create text file'
import os
# get filename
while True:
    fname = raw_input('Enter file name: ')
    if os.path.exists(fname):
        print"*** ERROR: '%s' already exists" % fname
    else:
        break
# get file content (text) lines
all = []
print "\nEnter lines ('.' by itself to quit).\n"
# loop until user terminates input
while True:
    entry = raw_input('> ')
    if entry == '.':
        break
    else:
        all.append(entry)
# write lines to file with NEWLINE line terminator
fobj = open(fname, 'w')
fobj.write('\n'.join(all))
fobj.close()
print 'DONE!'

运维网声明 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-59468-1-1.html 上篇帖子: 【python核心编程读书笔记】第7章--映射和集合 下篇帖子: python selenium 常见问题列表
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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