python学习笔记之基础一(第一天)
银角大王之基础一 :
http://www.cnblogs.com/wupeiqi/articles/4906230.html
1、 python字符介绍
在C语言中没有字符串,只有字符
在python中的字符串hello,在C语言中是以字符数组在内存存放['h','e','l','l','o'],如果对字符串修改,则是在内存中新开辟了一段空间进行存放。
字符串特性:一旦修改,需要重新创建。
例: "hello" + "ni" + "hao" 内存中:['h','e','l','l','o'] + ['n','i'] + ['h','a','o']
万恶的“+”,“+”号越多,在内存中多次重复创建,浪费空间。
C语言需要手动回收,而python,C#等高级语言自带虚拟机会进行GC垃圾回收没有被调用的内存访问空间。
2、 python字符串的格式化(占位符)可以节省内存空间
有如下二种方式,例:
说明:第二种format方式的效果会更好,性能更好,其实变量a的值没有变,在格式化赋值时会在内存中新开辟空间存放。在python2.7和python3.4中测试结果相同
>>> a = 'i am %s,age is %d'
>>> a % ('wangkai',33)
'i am wangkai,age is 33'
>>> print(a)
i am %s,age is %d >>> a = 'i am {0},age is {1}'
>>> a.format('wangkai',33)
'i am wangkai,age is 33'
>>> print(a)
i am {0},age is {1}
变量格式化
3、 在python中会生成一个缓存池来节省内存空间
主要存放经常用到的字符串及数字,所以在一定范围内对变量赋同样的值,他们的id值是一样的,当超出这个池的时候,id值则会不同
分别在python2.7和python3.4版本中进行测试,测试结果如下:(经测试在python2.7和python3.4中效果一样)
针对字符串,无限制
>>> a = 'asdfsafsafasfsafasdfasfasfasf'
>>> b = 'asdfsafsafasfsafasdfasfasfasf'
>>> id(a),id(b)
(140704388394128, 140704388394128)
>>> a = 'ni'
>>> b = 'ni'
>>> id(a),id(b)
(140704388417416, 140704388417416)
字符实例
针对数字,范围:小于-5,大于256
>>> a = -5
>>> b = -5
>>> id(a),id(b)
(8745920, 8745920) >>> a = -6
>>> b = -6
>>> id(a),id(b)
(140718131946128, 140718131946320) >>> aa=256
>>> bb=256
>>> id(aa),id(bb)
(8754272, 8754272) >>> aa = 257
>>> bb = 257
>>> id(aa),id(bb)
(19083048, 18637656)
数字实例
具体python源码对数字的定义如下:

4、python内部执行过程:

5、print说明:
Python 2中的print语句被Python 3中的print()函数取代,这意味着在Python 3中必须用括号将需要输出的对象括起来。
特别说明:经测试在python2.6、python2.7,print作为语句,但已支持括号方式,例:a = 1 print a print(a)均可;
在python3.4版本中,print作为函数,只支持括号方式。
如何限制print的默认换行:
1、python2版本下,在print输出的最后加个逗号","
2、python3.4下, print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False) 设置end为空即可
建议:为了代码在python2和3上的兼容性,请直接使用print函数括号方式。
6、用户交互:
在python2.7版本中
raw_input:交互输入内容转化为字符串;
input:交互输入内容不进行转化;相当于python3里的eval
在python3.4版本中只有input,想要获取数字,需要进行int转变。
举例:
#_*_ coding:utf-8 _*_ info = 'This var will be printed out ...'
name = raw_input('Please input your name:')
age = int(raw_input('age:'))
#age = input('age:')
job = raw_input('Job:')
salary = input('Salary:')
print type(age) print '''
Personal information of %s:
Name: %s
Age : %d
Job : %s
Salary: %d
--------------------------
''' % (name,name, age,job,salary)
用户交互实例
n=1
while n <= 3: input_num = int(input('input the num : '))
if input_num == luck_num:
print('good')
break
elif input_num > luck_num:
print('the real num is bigger')
else:
print('the real num is smaller')
n = n + 1
else:
print('too many try')
三次输入判断
7、用户输入内容隐藏:
输入密码时,如果想要不可见,需要利用getpass 模块中的 getpass方法,即:
>>> import getpass
>>> pwd = getpass.getpass("please input the passwd:")
please input the passwd:
>>> print(pwd)
asdfasdfa
输入字符隐藏
8、文件操作:
python2.7版本中可以用file和open打开文件, python3.4版本中只有open
f = open('file_name','r')
g = file('file_name','r')
其中打开模式有'r','w,','a','b','+'
w:替换重写 a:追加
b:二进制文件,主要用于跨平台,来解决window和linux的回车换行区别
+:用于同时读写
* 一般会对文件读到的第一行去掉末尾的换行符 f.readline().strip('\n')
* read 读整个文件为一个字符串
* readline() 是一行一行读
* readlines()是按行读,存成一个列表
* xreadlines:针对大文件,一行一行读,默认是把全文件读入内存。
* r+ :读写,默认从文件尾写入,可以由seek跳到指定位置,然后替换文件内容。
初始文件aa.txt
kevin:123:1
wang:22:2
kai:311:3
对python2.7和python3.4测试结果一样。
# _*_ coding: UTF-8 _*_ import sys,os
file = sys.argv[1] f = open(file,'r+')
line_list = f.readlines() new_list = []
for line in line_list:
#去掉行尾的换行符
line = line.strip('\n')
#对行信息按分隔符进行分列
value_list = line.split(':') #获取最后一字段并数字化
last_value = int(value_list[-1])
#对最后一字段进行数字计算
last_value *= 13 value_list[-1] = str(last_value)
#将列表转变为字符串
new_str = ':'.join(value_list)
#将循环的改变后的行追加到新的列表
new_list.append(new_str)
'''
######第一种方法按行追加到文件#####
#按修改后的行追加到文件中
#f.writelines(new_str + '\n')
'''
'''
#####第二种方法将所有行统一追加到文件#####
#将所有修改后的新列表转化为字符串
my_str = '\n'.join(new_list)
#将指标移到行首
f.seek(0)
#将写回到文件
f.write(my_str + '\n')
'''
f.close()
文件操作
9、类型转变:
Python 有办法将任意值转为字符串:将它传入repr() 或str() 函数。
函数str() 用于将值转化为适于人阅读的形式,而repr() 转化为供解释器读取的形式(如果没有等价的
语法,则会发生SyntaxError 异常) 某对象没有适于人阅读的解释形式的话, str() 会返回与repr()等同的值。很多类型,诸如数值或链表、字典这样的结构,针对各函数都有着统一的解读方式。字符串和浮点数,有着独特的解读方式。
Some examples:
下面有些例子
>>> s = 'Hello, world.'
>>> str(s)
'Hello, world.'
>>> repr(s)
"'Hello, world.'"
>>> str(1.0/7.0)
'0.142857142857'
>>> repr(1.0/7.0)
'0.14285714285714285'
经测试python2.7中有差别,在python3.6中针对数字,str和repr已经没有区别
python学习笔记之基础一(第一天)的更多相关文章
- Python学习笔记之基础篇(-)python介绍与安装
Python学习笔记之基础篇(-)初识python Python的理念:崇尚优美.清晰.简单,是一个优秀并广泛使用的语言. python的历史: 1989年,为了打发圣诞节假期,作者Guido开始写P ...
- VS2013中Python学习笔记[Django Web的第一个网页]
前言 前面我简单介绍了Python的Hello World.看到有人问我搞搞Python的Web,一时兴起,就来试试看. 第一篇 VS2013中Python学习笔记[环境搭建] 简单介绍Python环 ...
- python学习笔记(基础四:模块初识、pyc和PyCodeObject是什么)
一.模块初识(一) 模块,也叫库.库有标准库第三方库. 注意事项:文件名不能和导入的模块名相同 1. sys模块 import sys print(sys.path) #打印环境变量 print(sy ...
- Python学习笔记:基础
本文根据廖雪峰的博客,学习整理笔记.主要内容有:基本数据类型,容器数据类型,变量及其作用域,判断及循环语法,函数式编程,面向对象,模块等概念. 数据类型 在python中,能够直接处理的数据类型有以下 ...
- Python学习笔记day01--Python基础
1 python的应用 Python崇尚优美.清晰.简单,是一个优秀并广泛使用的语言. Python可以应用于众多领域,如:数据分析.组件集成.网络服务.图像处理.数值计算和科学计算等 ...
- Python学习笔记-Day1-Python基础
1.python诞生 关于Python的起源,吉多·范罗苏姆在1996年写到: 六 年前,在1989年12月,我在寻找一门“课余”编程项目来打发圣诞节前后的时间.我的办公室会关门,但我有一台家用电脑, ...
- python学习笔记1--python简介和第一行代码编写
一.什么是python? python是一种面向对象,解释型语言,它语法简介,容易学习.本节博客就来说说本人学习python的心得体会. 二.python环境安装 目前python版本有python2 ...
- python学习笔记之基础数据和控制
注释: 单行注释 # 多行注释''' ''' 注意:当注释中有汉字时需要在python文件的第一行添加如下内容之一:#coding:gbk或#coding:utf-8或##-*- coding ...
- Python 学习笔记 编程基础汇总000
编程基础知识汇总000 1.计算机结构 2.编程语言分类 3.字符编码由来 计算机结构 计算机组成五大部件: 控制器.运算器.存储器.输入.输出 控制器(Controler):对程序规定的控制信息进行 ...
随机推荐
- hibernate_Restrictions用法
方法 说明 Restrictions.eq = Restrictions.allEq 利用Map来进行多个等于的限制 Restrictions.gt > Restrictions.ge &g ...
- java和js根据一个或者多个空格截取字符串
java: String str = "张三 fw1234"; String s[] = str.split("\\s+"); js: var str=&quo ...
- ps 文字处理篇
ps文字处理篇 1.对文字镂空处理并且移除到新图像上: 首先创建图层-文字编辑-横排编辑 其次 魔棒工具选择通过颜色来选择选区 右击图层-栅格化图层 删除键将选择的颜色删除留下选区- 复制粘贴到另一个 ...
- C %p
格式控制符“%p”中的p是pointer(指针)的缩写.指针的值是语言实现(编译程序)相关的,但几乎所有实现中,指针的值都是一个表示地址空间中某个存储器单元的整数.printf函数族中对于%p一般以十 ...
- 《Linux内核设计与实现》读书笔记 第一、二章
第一章 Linux内核简介 1.1Unix历史 Unix特点:1.很简洁 2.所有东西都被当成文件对待 3.Unix内核和相关的系统工具软件都是用C语言编写而成 4.进程创建非常迅速 所以Uni ...
- 对接第三方支付接口-获取http中的返回参数
这几天对接第三方支付接口,在回调通知里获取返回参数,有一家返回的json格式,请求参数可以从标准输入流中获取. //1.解析参数 , 读取请求内容 BufferedReader br; String ...
- spring mvc@RequestParam根据参数名获取传入参数值
在SpringMVC后台控制层获取参数的方式主要有两种,一种是request.getParameter("name"),另外一种是用注解@RequestParam直接获取.这里主要 ...
- 阿里云服务器Linux CentOS安装配置(三)yum安装mysql
阿里云服务器Linux CentOS安装配置(三)yum安装mysql 1.执行yum安装mysql命令:yum -y install mysql-server mysql-devel 2.启动mys ...
- 【java学习笔记】字符串和Date的转换
String dateVal = "1992-12-06 18:34:23"; SimpleDateFormat sdf = new SimpleDateFormat(" ...
- rabbitmq之消息重入队列
说起消息重入队列还得从队列注册消费者说起,客户端在向队列注册消费者之后,创建的channel也会被主队列进程monitor,当channel挂掉后,主队列进程(rabbit_amqqueue_proc ...