python下函数参数的传递:python不允许程序员选择采用传值还是传引用。Python参数传递采用的肯定是“传对象引用”的方式。这种方式相当于传值和传引用的一种综合。如果函数收到的是一个可变对象(比如字典或者列表)的引用,就能修改对象的原始值--相当于通过“传引用”来传递对象。如果函数收到的是一个不可变对象(比如数字、字符或者元组)的引用,就不能直接修改原始对象--相当于通过“传值’来传递对象。
以下针对的是python3.5
1 如果是想在cmd下直接运行py文件,则 python *.py,即可运行
如果是进入python,要运行代码,则应该使用 run *.py
2 路径问题,进入ide界面后使用命令pwd可以知道当前的路径,要运行比如C:\下的某个文件,则需要将目录转到当前目录或者使用以下命令:
import syssys.path.append("/path/to/your/test.py")
import test
run test
3 print使用方法应该是print (“hello world!”),而不是print “hello world!”#(这是2.x中的用法)
4 python下文件读应该是使用:
f = open('data.txt',r)
while True
line = f.readline()
if len(line)==0
break
print (line)
f.cloes()
写文件是
f = open('data.txt','w')#w是写,会覆盖以前的,a是追加写,不会覆盖,r是读取
a = 1.4
f.write(str(a)+'\n')#write是写一个字符到文件,而writeline是写一个序列到文件
f.cloes()
下面的的关于读取天天、xt的内容是转载自博客:
很多时候,我们将数据存在txt或者csv格式的文件里,最后再用python读取出来,存到数组或者列表里,再做相应计算。本文首先介绍写入txt的方法,再根据不同的需求(存为数组还是list),介绍从txt读取浮点数的方法。
一、写入浮点数到txt文件:
假设每次有两个浮点数需要写入txt文件,这里提供用with关键字打开文件的方法,使用with打开文件是一个很好的习惯,因为with结束,它就会自动close file,不用手动再去flie.close()。
with open('file_path/filename.txt','a') as file:
write_str = '%f %f\n'%(float_data1,float_data2)
file.write(write_str)
二、从txt文件提取浮点数到numpy数组或list列表
首先假设你有一个odom.txt 的文件,14行,2列,数据都是浮点,里面每一行的数据个数都相同
1.如果你是想把这些数据读取出来,存为numpy数组,那么一句代码可以搞定:
a = numpy.loadtxt('odom.txt')
存为numpy数组以后,a的尺寸可以用a.shape进行查看,这里应为:(14,2)也就是14行2列。如果你觉得这个形状不是你期待的,你可以用:
b = numpy.reshape(a,(你想要的形状))
如
b = numpy.reshape(a,(-1,1,2))那么b就是一个三维数组了(14,1,2)
2.如果只是想读出来,存到一个list里,那就用下面的常用python格式了:
with open('odom.txt', 'r') as f:
data = f.readlines() #txt中所有字符串读入data
for line in data:
odom = line.split() #将单个数据分隔开存好
numbers_float = map(float, odom) #转化为浮点数
print numbers_float
参考:
1.txt读取文件beginner tutorial
5 python中常见的内建数据类型有,list(列表),tuple(元组),str(字符串),他们都可以称为容器(container),list中的数据是可以修改的,而tuple和str中的数据是不能修改的,另外,list和tuple中的数据是混合类型的,而str中是只能够为字符,这几个数据的特点是
list的两种初始化方法:
a = [1,'b']#注意,字符或者字符串要用单或双引号括起来
直接用关键字来定义
a = list([1,'b'])
另外,打印的时候,list打印出来是:
print (a)
[1,'b']
从这里可以看出,list数据的关键是,中括号。
tuple(元组):
tuple和list一样,都是容器,他们的区别是tuple中的值是不能够被修改的,另外,区分tuple与list的关键点在于,使用逗号,不加括号。比如
a = 1,'b'
#即使只有一个元素,要使他为tuple就要使用逗号
aa = 1,#只有一个元素的时候,要加逗号
aaa = 'b',
#使用关键字指定:
a = tuple((1,'b'))
aa = tuple((1,))
aa = tuple(('b',))#等同于tuple('b'),tuple('b',)
#注意,当只有一个元素的时候,除非为字符,否组数字是不能这样的:a = tuple(1,),a = tuple(1),单个数字只能够这样:
a = tuple((1,))
#或者
a = tuple([1,])
#打印的时候,tuple打印出来是:
a = 1,'b'
aa = tuple([1,'b'])
aaa = tuple((1,))
aaaa = tuple('abs')#等同于tuple('abs',)
print (a)
print (aa)
print (aaa)
print (aaaa)
(1,'b')
(1,'b')
(1,)
('a','b','s')
另外,可以将str转换成list,
a = '1.4,1.4'
b = a.split(',')
这样,就将a转换成了list,第二行语句的意思是,将a,以逗号进行区分,这样,就将a转换成了list,如果打印b的话,会出现:
['1.4','1.4\n']
再比如,有一个文件,data.txt,里面的数据是:
1.4,2
2,3
如果要将这些数据读取进来再变成数字list那么应该这么做:
f = open('data.txt')
mylist = []
while True
line = f.readline();
a = line.strip()#首先将该行末尾的\n去掉
b = a.split(',')#再将该行以,进行划分,这一步,就将str变成了list
for data in b
mylist.append(float(data))#将字符变成了数字
但是这样得到的数据都是连成一个向量,失去了原来的shape信息,因此还可以这样:
mi = []#定义一个list
myline = f.readlines()#读取所有行,前面是一行一行的读取
for line in myline:
aas = line.strip() #去掉该行的末尾的换行符号,注意这里的aas还是str
asss = aas.split(',')#将一个str按照,进行区分,将一个字符串变成一个list
tmp=[]#定义一个list
for dda in asss:
tmp.append(float(dda))#将该行的所有字符变成数字
#也可以用这一条语句替换掉上面的三条语句:tmp =(list)(eval(aas))
#注意输入是aas,不是asss,其输入是一个字符串
mi.append(tmp)#添加该行到前面的list中
str(字符串),和tuple一样,str中的数据是不能够修改的,这里主要给出几个str的函数:strip(),用于去掉字符串中的指定的字符,默认的是去掉换行符,需要注意的是,调用该函数不会改变原始字符串,而是返回一个修改后的字符串,这是因为str是不能够修改的,replace(old,new),用new的字符去替换掉old的字符串,同样也是返回修改后的字符串,split(','),将字符串用逗号进行分裂,返回的是一个list。
另外,str还有一个成员函数:format,str.format,在str中{}部分,用format后的内容来替换,比如:
url = “www.baidu.com”+”{:0>2d}”.format()
在这里,d表示期待一个整数:
>>>"{:d}".format(3)
'3'
2d表示格式到2个字符,默认使用空格补齐
>>>":2d".format(3)
' 3'
0>表示使用0在左边补齐:
>>>"{:0>2d}".format(3)
'03'
下面的网址对格式化输出有更详细的介绍:
http://blog.csdn.net/lisonglisonglisong/article/details/38564417