再一次重新学习Python——Python语法基础

本文主要介绍了Python的基础语法,包括输出与输入、字符串处理、布尔值、空值、Unicode编码、列表、元组、字典、集合,以及不可变和可变对象的概念。详细讲解了各种数据类型的操作和用法,并提供了实例演示。
摘要由CSDN通过智能技术生成

一、热身

  • 1、输出

>>> print 'I','need','python'   中间加空格不会输出 碰到逗号就输出一个空格

输出 I need python

  • 2、输入 raw_input函数,可以让用户输入并存放至变量中

>>> name = raw_input()

Saikikky

直接输出变量name 也可以用print name语句 就可以书出name中保存的内容

>>> name

'Saikikky'

 

可以输出提示信息

>>> name = raw_input('please enter your name:')

please enter your name:Saikikky
           >>> print 'hello,',name

hello, Saikikky

二、语法(缩进方式:四个空格的缩进 python大小写敏感)

  • 1、关于字符

\n表示换行,\t表示制表符,字符\本身也要转义,所以\\表示的字符就是\

Python还允许用r''表示''内部的字符串默认不转义

>>> print '\\\t\\'
           \       \
           >>> print r'\\\t\\'

\\\t\\

如果字符串内部有很多换行,用\n写在一行里不好阅读,为了简化,Python允许用'''...'''的格式表示多行内容

写成程序没有... 下面的代码是在交互命令行里的输入

>>> print '''line1
            ... line2
            ... line3'''
            line1
            line2

line3

  • 2、布尔值

Python中的布尔值要区分大小写 True 和 False

可以用and、or和not运算

  • 3、空值

空值是Python中 的一个特殊的值,用None表示,不能理解为0

0是有意义的,而None是一个特殊的空值

  • 4、字符串

ord()函数和chr()函数,可以按照ASCII编码把字母和对应的数字相互转换

>>> ord('A')
            65
            >>> chr(65)

'A'

以Unicode表示的字符串用u'...'表示,例如

>>> print u'中文'
           中文
           >>> u'中'
           u'\u4e2d'       #\u后面是十六进制的Unicode码
           >>> u'A'

u'A'

>>> u'\u0041'

u'A'

将Unicode编码的u'xxx'转为UTF-8编码的'xxx'用encode('utf-8')方法

反过来用decode('utf-8')方法

>>> u'ABC'.encode('utf-8')
           'ABC'    #英文转换之后值相等但占用存储空间不同
           >>> u'中文'.encode('utf-8')

'\xe4\xb8\xad\xe6\x96\x87'

>>> 'abc'.decode('utf-8')
           u'abc'

len()函数返回字符串长度

通常在文本文件开头写上

#!/usr/bin/env python

# -*- coding: utf-8 -*-

第一行注释是为了告诉Linux/OS X系统,这是一个Python可执行程序,Windows系统会忽略这个注释;

第二行注释是为了告诉Python解释器,按照UTF-8编码读取源代码,否则,你在源代码中写的中文输出可能会有乱码。

  • 5、格式化,与C语言一致,用%实现

>>> 'Hello,%s'%'world'
            'Hello,world'
            >>> 'Hi, %s, you have $%d.' % ('Saikikky', 100000)

'Hi, Saikikky, you have $100000.'

 

常见的占位符有:

%d

整数

%f

浮点数

%s

字符串

%x

十六进制整数

%s可以把任何数据类型转换成为字符串 其中%%转义表示%

格式化整数和浮点数还可以指定是否补0和整数与小数的位数:

>>> '%2d-%02d' % (3,1)
           ' 3-01'     #前面有个空白符
           >>> '%.2f'%3.1415926

           '3.14'

在Python2.X版本中需要'xxx'和u'xxx'两种字符串表示,而Python3.X则统一成了Unicode编码,但以字节形式表示的字符    串要加b前缀,即b'xxx'.

  • 6、list

list是一种有序的集合,可以随时添加和删除其中的元素。

list元素索引时有一种特殊的情况,最后一个元素的索引是-1,倒数第二个是-2以此类推

append()函数加到末尾,insert(index, 'xxx')加到指定位置

pop()删除list末尾的元素,删除指定位置用pop(i)

list中元素的数据类型可以不同例如:

>>> L = ['Apple', 123, True]
>>> S = ['Python', 'Java', ['asp', 'php'], 'scheme', L]
>>> S
['Python', 'Java', ['asp', 'php'], 'scheme', ['Apple', 123, True]]
>>> len(S)

5   #注意S的长度只有5 其中两个元素是另外的list

  • 7、tuple,与list相似,但一旦初始化就不能修改,这种不能修改指的是每个元素的指向永远不变,list初始化用[],tuple用().

注意只有一个元素的时候要加一个逗号消除歧义,t = (1,),在显示的时候也会加一个逗号。

  • 8、条件判断和循环

if,else和elif(类似Java中的else if)

for...in循环,依次把list和tuple中的每个元素迭代出来

range()用于生成一个整数序列,range(5)即生成从0开始并小于5的整数

raw_input()读取的内容永远以字符串的形式返回,整数用int(raw_input())转换

  • 9、dict(字典)其他语言中称为map,使用键值对存储, 定义时用{}

>>> d = {'Saikikky':100, 'Bob':95}
>>> d
{'Saikikky': 100, 'Bob': 95}
>>> d['Saikikky']

100

直接用d['Adam'] = 95的方式可以直接添加

可以用in判断key是否存在 ‘Thomas’in d或者采用get方法

>>> d.get('Saikikky')   
100
>>> d.get('Thomas')     #返回None的时候Python的交互式命令行不显示结果
>>> d.get('Thomas',-1)

-1

删除一个key用pop(key)方法,对应的键值对直接删除

list可变,不能用作dict中的key值,其他不变的例如字符串,整型等都可以用作key

  • 10、set(一组key的集合,但不存储value,key值不能重复)即集合,与dict类似不能放入可变对象

可以用add(key)方法添加元素,remove(key)方法删除元素

>>> s = set([1,2,3])   #创建的时候,需要提供一个list作为输入集合
>>> s

set([1, 2, 3])

两个set可以做交并集的操作,例如

>>> s1 = set([1,2,3])
>>> s2 = set([2,3,4])
>>> s1 & s2
set([2, 3])
>>> s1 | s2

set([1, 2, 3, 4])

  • 11、不可变和可变对象

 

对于可变对象,比如list,对list进行操作,list内部的内容是会变化的,比如:

>>> a = ['c', 'b', 'a']
>>> a.sort()
>>> a
['a', 'b', 'c']

而对于不可变对象,比如str,对str进行操作呢:

>>> a = 'abc'
>>> a.replace('a', 'A')
'Abc'
>>> a
'abc'

虽然字符串有个replace()方法,也确实变出了'Abc',但变量a最后仍是'abc',应该怎么理解呢?

我们先把代码改成下面这样:

>>> a = 'abc'
>>> b = a.replace('a', 'A')
>>> b
'Abc'
>>> a
'abc'

要始终牢记的是,a是变量,而'abc'才是字符串对象!有些时候,我们经常说,对象a的内容是'abc',但其实是指,a本身是一个变量,它指向的对象的内容才是'abc'

a-to-str

当我们调用a.replace('a', 'A')时,实际上调用方法replace是作用在字符串对象'abc'上的,而这个方法虽然名字叫replace,但却没有改变字符串'abc'的内容。相反,replace方法创建了一个新字符串'Abc'并返回,如果我们用变量b指向该新字符串,就容易理解了,变量a仍指向原有的字符串'abc',但变量b却指向新字符串'Abc'了:

a-b-to-2-strs

所以,对于不变对象来说,调用对象自身的任意方法,也不会改变该对象自身的内容。相反,这些方法会创建新的对象并返回,这样,就保证了不可变对象本身永远是不可变的。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值