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

[经验分享] 第3章 Python基础(2)

[复制链接]

尚未签到

发表于 2017-4-30 06:21:00 | 显示全部楼层 |阅读模式
  3.5.2 动态类型
  Python中不但变量名无需事先声明,而且也无需类型声明。在Python语言中对象的类型和内存占用都是在运行时确定的。在创建时,也就是赋值时,解释器会根据语法和右侧的操作数决定新对象的类型。在对象创建后,一个该对象的引用会被赋值给左侧的变量。
  3.5.3 内存分配
  在变量分配内存时,是在借用系统内存,在用完之后,应该释放借用的系统资源。Python解释器承担了内存管理的复杂任务,这大大简化了应用程序的编写。
  3.5.4 引用计数
  Python内部记录着所有使用中的对象各有多少引用。一个内部跟踪变量成为一个引用计数器。每个对象各有多少个引用,简称引用计数。当对象被创建时,就创建了一个引用计数,当这个对象不再需要时,它被垃圾回收。
  1.增加引用计数
  对象被创建
  另外的别名被创建
  被作为参数传递给函数
  作为容器对象的一个元素
  2.减少引用计数
  一个本地引用离开了其作用范围
  对象的别名被显示销毁
  对象的一个别名被赋值给其他对象
  对象被从一个窗口对象中移除
  窗口对象本身被销毁
  del 语句删除一个变量。 执行del x会删除该对象的最后一个引用,也就是该对象的引用计数会减少为0,这会导致该对象从此“无法访问”或“无法抵达”。从此刻起,该对象就成为垃圾回收机制的回收对象。任何追踪或调试程序会给一个对象增加一个额外的引用,这会推迟该对象被回收的时间。
  3.5.5 垃圾回收
  虽然解释器跟踪对象的引用计数,但垃圾收集器负责释放内存。垃圾收集器是一块独立的代码,它用来寻找引用计数为0的对象。它也负责检查那些虽然引用计数大于0但也应该被销毁的对象。Python的垃圾收集器实际上是一个引用计数和一个循环垃圾收集器。
  3.6 第一个Python程序
  

  创建文件并写入内容
  #!/user/bin/env python
  'makeTextFile.py -- Create text file'
  

  import os
  ls = os.linesep
  

  # get file name
  fname = raw_input("FileName:")
  while True:
  if os.path.exists(fname):
  print "Error '%s' already exists" % fname
  fname = raw_input("FileName:")
  else:
  break
  

  # get file content (text) lines
  all = []
  print "\n Enter 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 proper line-ending
  fproj = open(fname, 'w')
  fproj.writelines(['%s%s' % (x,ls) for x in all])
  fproj.close()
  print 'Done!'
  os.path.exists() 判断文件是否存在
  os.lineseq 行结束符,跨平台,Unix下代表'\n', win32下代表'\r\n'。
  文件对象的writelines()方法接收包含行结束符的结果列表。
  ['%s%s' % (x,ls) for x in all] 列表解析,使用一个for循环将所有结果输入到一个列表中。

  

  文件读取和显示
  #!/user/bin/env python
  

  'readTextFile.py -- read and display text file'
  

  # get filename
  

  fname = raw_input('Enter filename: ')
  print
  

  try:
  fobj = open(fname, 'r')
  except IOError, e:
  print "*** file open error:", e
  else:
  # display contents to the screen
  for eachLine in fobj:
  print eachLine,
  fobj.close()
try-except-else语句中的else子句在try代码块运行无误时执行。

运维网声明 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-370943-1-1.html 上篇帖子: 第4章 Python对象(1) 下篇帖子: python实时统计双网卡流量
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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