码迷,mamicode.com
首页 > 编程语言 > 详细

Python初体验之基础语法(二)

时间:2015-08-06 22:16:00      阅读:259      评论:0      收藏:0      [点我收藏+]

标签:

所有测试语句基于Python 2.7.6 , Ubuntu 14.04 LTS

自学Python,如果哪里说的不对,还请指正。谢谢。

示例绝大部分来自博客园vamei的python教程

1.文件读写操作

一. 按字节读取文件

#!/usr/bin/env python
#coding=UTF-8

#默认python编码是ASCII编码 要支持中文
#加上coding=UTF-8的声明

# open()打开文件 r只读 w写入 a追加 r+ w+ a+模式
# a+方式打开文件 指针指向结尾 , r方式 指针在文件头
# f.tell() 测试文件偏移位置 f.seek() 改变文件流
file = open(test.txt,r)
content = file.read(1024)  #读取N bytes字节数据
file.close()
print "按字节读取:",\n,content

技术分享

没有其他高级语言繁琐的文件流操作,open()函数拿到文件对象直接操作,简单粗暴。

 

二. 按行读取文件

file = open(test.txt,r)
content = file.readline() # 读取一行
file.close()
print "按行读取:","\n",content

技术分享

记得使用完后,关闭文本对象。file.close()

 

三.文件写入操作

#打开某个文件  如果没有则创建
file = open(temp.txt,w)
file.write(Python is good!\n) #擦除文件内容,且只能写一行
file.writelines([Objective-c is bad!\n,
Swift is wtf?\n,C# and Java which better])
file.close()
file = open(temp.txt,rw)
content = file.readlines() #读取所有行,存储在列表中
file.close()
index = 0
while(index < len(content)):
    print content[index]
    index += 1

技术分享

往文件中写入多行内容,使用readlines() 读取所有行,并返回一个list对象。Python中对象的方法命名格式不是驼峰法,

导致我经常写成类似readLines() 第二单词首字母的大写的形式,感觉Python的方法命名受c语言影响,这个还需要慢慢适应。

 

2.模块的简单使用

先在test.py的目录下建立一个utils.py文件,我们将之前的写的判断闰年的函数和自定义的SuperList类放在一起,以便其他模块使用。

#!/usr/bin/env python
#coding=UTF-8

#自定义list子类 添加对类似 [1,2,3] - [2,3]运算的支持
#这种自带两个__下划线的方法 是特殊方法
class SuperList(list):
    def __sub__(self,b):
        #self是SuperList的对象,可以使用类似 list[:] 的方式表示整个list对象
        a = self[:]
        b = b[:]
        #如果list包含b中的元素,就移除,直到循环结束 len()返回list中元素个数
        while len(b) > 0 :
            element_b = b.pop() #pop() 从list中弹出最后一个元素值,并返回他的值
            if element_b in a :
                a.remove(element_b)
        return a
#这里的-减号运算符代表__sub__() 方法,类似+ 代表__add()__
#特殊方法和运算符相等价
#print SuperList([1,2,3,4]) - SuperList([1,2])


#函数定义  是否为闰年
def isLeafYear(year):
    return year%400==0 or (year%100!=0 and year%4==0)


我们再建立一个model.py文件,将utils模块导入

#! /usr/bin/env python
#coding=UTF-8


import utils    #一个.py文件就构成一个模块
‘‘‘
import a as b         # 引入模块a,并将模块a重命名为b
from a import function1   # 从模块a中引入function1对象。调用a中对象时
              # 我们不用再说明模块,即直接使用function1,而不是a.function1。
from a import *       #从模块a中引入所有对象 (类似Java的导包)
‘‘‘
#Python搜索模块顺序
‘‘‘
   1. 程序所在的文件夹
   2. 标准库的安装路径
   3. 操作系统环境变量PYTHONPATH所包含的路径
‘‘‘
#模块.对象的方式来调用
a = utils.isLeafYear(2004)
print a

ls = utils.SuperList([2,3,4,5]) - utils.SuperList([1,2,5])
print ls

技术分享

通过导入的方式使用现成的方法或者类,这就和Java  C#中关于面向对象中类的操作比较相似了。

 

3.模块包

将功能相关的模块放在一个文件夹下,通过import 模块包名.模块名  导入。

文件夹名.文件名

建立maths文件夹,新建一个__init__.py的空文件,告诉python这是一个模块包

技术分享

建立uitls.py文件,添加求平方和  求1~n个数字之和的函数如下:

#!/usr/bin/env python
#coding=UTF-8

#求两个数的平方和
def square_sum(a,b):
    c = a**a + b**b
    return a,b,c 

#求1~n的和
def sum(n):
    c = n*(n+1)/2
    return c

在home目录下建立test_01.py 如下

#!/usr/bin/env python

import maths.utils as function

print function.square_sum(1,2)

print function.sum(100)

技术分享

 

Python初体验之基础语法(二)

标签:

原文地址:http://www.cnblogs.com/sphere/p/4709187.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!