Python 基础语法(一)「建议收藏」

Python 基础语法(一)「建议收藏」Python的特点1.简单Python是一种代表简单思想的语言。2.易学Python有极其简单的语法。3.免费、开源Python是FLOSS(自由/开放源码软件)之一。4.高层语

大家好,又见面了,我是你们的朋友全栈君。

Python的特点

  1. 简单

    Python是一种代表简单思想的语言。

  2. 易学

    Python有极其简单的语法。

  3. 免费、开源

    Python是FLOSS(自由/开放源码软件)之一。

  4. 高层语言

    使用Python编写程序时无需考虑如何管理程序使用的内存一类的底层细节。

  5. 可移植性

    Python已被移植到很多平台,这些平台包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、

  BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、

  Windows CE甚至还有PocketPC。

  6. 解释性

    可以直接从源代码运行。在计算机内部,python解释器把源代码转换为字节码的中间形式,然后再把它翻译成计算机使用的机器语言。

  7. 面向对象

    Python既支持面向过程编程也支持面向对象编程。

  8. 可扩展性

    部分程序可以使用其他语言编写,如c/c++。

  9. 可嵌入型

    可以把Python嵌入到c/c++程序中,从而提供脚本功能。

  10. 丰富的库

    Python标准库确实很庞大。它可以帮助你处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、

  电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI(图形用户界面)、Tk和其他与系统有关的操作。

 

—————分割线————————以下是Python的基本语法———————————————————

一、基本概念

  1. python中数有四种类型:整数、长整数、浮点数和复数。

  • 整数, 如 1
  • 长整数 是比较大的整数
  • 浮点数 如 1.23、3E-2
  • 复数 如 1 + 2j、 1.1 + 2.2j

  2. 字符串(字符的序列)

  • python中单引号和双引号使用完全相同。
  • 使用三引号(”’或”””)可以指定一个多行字符串。
  • 转义符 ‘\’
  • 自然字符串, 通过在字符串前加r或R。 如 r”this is a line with \n” 则\n会显示,并不是换行。
  • python允许处理unicode字符串,加前缀u或U, 如 u”this is an unicode string”。
  • 字符串是不可变的。
  • 按字面意义级联字符串,如”this ” “is ” “string”会被自动转换为this is string。

  3. 标识符的命名

  • 第一个字符必须是字母表中字母或下划线’_’。
  • 标识符的其他的部分有字母、数字和下划线组成。
  • 标识符对大小写敏感。

  4. 对象

    python程序中用到的任何“东西”都成为“对象”。

  5. 逻辑行和物理行

    物理行是我们在编写程序时看到的,逻辑行则是python看到的。

    python中分号;标识一个逻辑行的结束,但是实际中一般每个物理行只写一个逻辑行,可以避免使用分号。

    多个物理行中可以写一个逻辑行,如下:

s = "peter is \
writing this article"

    上面\的使用被称为‘明确的行连接’, 又如:

print \
"peter"

  6. 缩进

    空白在python是非常重要的,行首的空白是最重要的,又称为缩进。行首的空白(空格和制表符)用来决定逻辑行的缩进层次,从而决定语句

  分组。这意味着同一层次的语句必须有相同的缩进,每一组这样的语句称为一个块。

  注意:不要混合使用空格和制表符来缩进,因为在跨越不同的平台时无法正常工作。

二、运算符与表达式

  1. 运算符与其用法

运算符 名称 说明 例子
+ 两个对象相加 3 + 5得到8。’a’ + ‘b’得到’ab’。
得到负数或是一个数减去另一个数 -5.2得到一个负数。50 – 24得到26。
* 两个数相乘或是返回一个被重复若干次的字符串 2 * 3得到6。’la’ * 3得到’lalala’。
**

返回x的y次幂

3 ** 4得到81(即3 * 3 * 3 * 3)
/ x除以y 4/3得到1(整数的除法得到整数结果)。4.0/3或4/3.0得到1.3333333333333333
// 取整除 返回商的整数部分 4 // 3.0得到1.0
% 取模 返回除法的余数 8%3得到2。-25.5%2.25得到1.5
<< 左移 把一个数的比特向左移一定数目(每个数在内存中都表示为比特或二进制数字,即0和1) 2 << 2得到8。——2按比特表示为10
>> 右移 把一个数的比特向右移一定数目 11 >> 1得到5。——11按比特表示为1011,向右移动1比特后得到101,即十进制的5。
& 按位与 数的按位与 5 & 3得到1。
| 按位或 数的按位或 5 | 3得到7。
^ 按位异或 数的按位异或 5 ^ 3得到6
~ 按位翻转 x的按位翻转是-(x+1) ~5得到6。
< 小于 返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。注意,这些变量名的大写。 5 < 3返回0(即False)而3 < 5返回1(即True)。比较可以被任意连接:3 < 5 < 7返回True。
> 大于 返回x是否大于y 5 > 3返回True。如果两个操作数都是数字,它们首先被转换为一个共同的类型。否则,它总是返回False。
<= 小于等于 返回x是否小于等于y x = 3; y = 6; x <= y返回True。
>= 大于等于 返回x是否大于等于y x = 4; y = 3; x >= y返回True。
== 等于 比较对象是否相等 x = 2; y = 2; x == y返回True。x = ‘str’; y = ‘stR’; x == y返回False。x = ‘str’; y = ‘str’; x == y返回True。
!= 不等于 比较两个对象是否不相等 x = 2; y = 3; x != y返回True。
not 布尔“非” 如果x为True,返回False。如果x为False,它返回True。 x = True; not y返回False。
and 布尔“与” 如果x为False,x and y返回False,否则它返回y的计算值。 x = False; y = True; x and y,由于x是False,返回False。在这里,Python不会计算y,因为它知道这个表达式的值肯定是False(因为x是False)。这个现象称为短路计算。
or 布尔“或” 如果x是True,它返回True,否则它返回y的计算值。 x = True; y = False; x or y返回True。短路计算在这里也适用。

   2. 运算符优先级(从低到高)

运算符 描述
lambda Lambda表达式
or 布尔“或”
and 布尔“与”
not x 布尔“非”
in,not in 成员测试
is,is not 同一性测试
<,<=,>,>=,!=,== 比较
| 按位或
^ 按位异或
& 按位与
<<,>> 移位
+,- 加法与减法
*,/,% 乘法、除法与取余
+x,-x 正负号
~x 按位翻转
** 指数
x.attribute 属性参考
x[index] 下标
x[index:index] 寻址段
f(arguments…) 函数调用
(experession,…) 绑定或元组显示
[expression,…] 列表显示
{key:datum,…} 字典显示
‘expression,…’ 字符串转换

   3. python 控制台输出 使用print

print "abc"    #打印abc并换行
print "abc%s" % "d"   #打印abcd
print "abc%sef%s" % ("d", "g")   #打印abcdefg

三、控制流

  1. if 语句

i = 10
n = int(raw_input("enter a number:"))

if n == i:
print "equal"
elif n < i:
print "lower"
else:
print "higher"

   2. while语句

while True:
pass
else:
pass
#else语句可选,当while为False时,else语句被执行。 pass是空语句。

  3. for 循环 for..in

for i in range(0, 5):
print i
else:
pass
# 打印0到4

  注:当for循环结束后执行else语句;

    range(a, b)返回一个序列,从a开始到b为止,但不包括b,range默认步长为1,可以指定步长,range(0,10,2);

  4. break语句

    终止循环语句,如果从for或while中终止,任何对应循环的else将执行。

  5. continue语句

    continue语句用来调过当前循环的剩余语句,然后继续下一轮循环。

四、函数

  函数通过def定义。def关键字后跟函数的标识符名称,然后跟一对圆括号,括号之内可以包含一些变量名,该行以冒号结尾;接下来是一块语句,即函数体。

def sumOf(a, b):
return a + b

  1. 函数形参

    函数中的参数名称为‘形参’,调用函数时传递的值为‘实参’

  2. 局部变量

    在函数内定义的变量与函数外具有相同名称的其他变量没有任何关系,即变量名称对于函数来说是局部的。这称为变量的作用域。

    global语句, 为定义在函数外的变量赋值时使用global语句。

def func():
global x
print "x is ", x
x = 1

x = 3
func()
print x

#3
#
1

  3. 默认参数

    通过使用默认参数可以使函数的一些参数是‘可选的’。

def say(msg, times =  1):
print msg * times

say("peter")
say("peter", 3)

    注意:只有在形参表末尾的那些参数可以有默认参数值,即不能在声明函数形参的时候,先声明有默认值的形参而后声明没有默认值的形参,只是因为赋给形参的值是根据位置而赋值的。

  4. 关键参数

    如果某个函数有很多参数,而现在只想指定其中的部分,那么可以通过命名为这些参数赋值(称为‘关键参数’)。

    优点:不必担心参数的顺序,使函数变的更加简单;假设其他参数都有默认值,可以只给我们想要的那些参数赋值。

def func(a, b=2, c=3):
print "a is %s, b is %s, c is %s" % (a, b, c)

func(1) #a is 1, b is 2, c is 3
func(1, 5) #a is 1, b is 5, c is 3
func(1, c = 10) #a is 1, b is 2, c is 10
func(c = 20, a = 30) #a is 30, b is 2, c is 20

  5. return 语句

    return语句用来从一个函数返回,即跳出函数。可从函数返回一个值。

    没有返回值的return语句等价于return None。None表示没有任何东西的特殊类型。

  6. DocStrings (文档字符串)

def func():
'''This is self-defined function

Do nothing
'''
pass

print func.__doc__

#This is self-defined function
#
#
Do nothing

五、模块

  模块就是一个包含了所有你定义的函数和变量的文件,模块必须以.py为扩展名。模块可以从其他程序中‘输入’(import)以便利用它的功能。

  在python程序中导入其他模块使用’import’, 所导入的模块必须在sys.path所列的目录中,因为sys.path第一个字符串是空串”即当前目录,所以程序中可导入当前目录的模块。

   1. 字节编译的.pyc文件

    导入模块比较费时,python做了优化,以便导入模块更快些。一种方法是创建字节编译的文件,这些文件以.pyc为扩展名。

    pyc是一种二进制文件,是py文件经编译后产生的一种byte code,而且是跨平台的(平台无关)字节码,是有python虚拟机执行的,类似于

  java或.net虚拟机的概念。pyc的内容,是跟python的版本相关的,不同版本编译后的pyc文件是不同的。

  2. from .. import

    如果想直接使用其他模块的变量或其他,而不加’模块名+.’前缀,可以使用from .. import。

    例如想直接使用sys的argv,from sys import argv 或 from sys import *

  3. 模块的__name__

    每个模块都有一个名称,py文件对应模块名默认为py文件名,也可在py文件中为__name__赋值;如果是__name__,说明这个模块被用户

  单独运行。

  4. dir()函数

    dir(sys)返回sys模块的名称列表;如果不提供参数,即dir(),则返回当前模块中定义名称列表。

    del -> 删除一个变量/名称,del之后,该变量就不能再使用。

六、数据结构

  python有三种内建的数据结构:列表、元组和字典。

  1. 列表

    list是处理一组有序项目的数据结构,列表是可变的数据结构。列表的项目包含在方括号[]中,eg: [1, 2, 3], 空列表[]。判断列表中是否包含某项可以使用in, 比如 l = [1, 2, 3]; print 1 in l; #True;支持索引和切片操作;索引时若超出范围,则IndexError;使用函数len()查看长度;使用del可以删除列表中的项,eg: del l[0] # 如果超出范围,则IndexError

    list函数如下:

    append(value)  —向列表尾添加项value

l = [1, 2, 2]
l.append(3) #[1, 2, 2, 3]

    count(value)  —返回列表中值为value的项的个数

l = [1, 2, 2]
print l.count(2) # 2

    extend(list2)  —向列表尾添加列表list2

l = [1, 2, 2]
l1 = [10, 20]
l.extend(l1)
print l #[1, 2, 2, 10, 20]

    index(value, [start, [stop]])  —返回列表中第一个出现的值为value的索引,如果没有,则异常 ValueError

l = [1, 2, 2]
a = 4
try:
print l.index(a)
except ValueError, ve:
print "there is no %d in list" % a

    insert(i, value)  —向列表i位置插入项vlaue,如果没有i,则添加到列表尾部

l = [1, 2, 2]

l.insert(1, 100)
print l #[1, 100, 2, 2]

l.insert(100, 1000)
print l #[1, 100, 2, 2, 1000]

    pop([i])  —返回i位置项,并从列表中删除;如果不提供参数,则删除最后一个项;如果提供,但是i超出索引范围,则异常IndexError

l = [0, 1, 2, 3, 4, 5]

print l.pop() # 5
print l #[0, 1, 2, 3, 4]

print l.pop(1) #1
print l #[0, 2, 3, 4]

try:
l.pop(100)
except IndexError, ie:
print "index out of range"

    remove(value)  —删除列表中第一次出现的value,如果列表中没有vlaue,则异常ValueError

l = [1, 2, 3, 1, 2, 3]

l.remove(2)
print l #[1, 3, 1, 2, 3]

try:
l.remove(10)
except ValueError, ve:
print "there is no 10 in list"

    reverse()  —列表反转

l = [1, 2, 3]
l.reverse()
print l #[3, 2, 1]

    sort(cmp=None, key=None, reverse=False)  —列表排序

【Python Library Reference】
cmp:cmp specifies a custom comparison function of two arguments (iterable elements) which should return a negative, zero or positive number depending on whether the first argument is considered smaller than, equal to, or larger than the second argument: 
“cmp=lambda x,y: cmp(x.lower(), y.lower())” 
key:key specifies a function of one argument that is used to extract a comparison key from each list element: “key=str.lower”
reverse:reverse is a boolean value. If set to True, then the list elements are sorted as if each comparison were reversed.In general, the key and reverse conversion processes are much faster than specifying an 
equivalent cmp function. This is because cmp is called multiple times for each list element while key and reverse touch each element only once.

l5 = [10, 5, 20, 1, 30]
l5.sort()
print l5 #[1, 5, 10, 20, 30]

l6 = ["bcd", "abc", "cde", "bbb"]
l6.sort(cmp = lambda s1, s2: cmp(s1[0],s2[1]))
print l6 #['abc', 'bbb', 'bcd', 'cde']

l7 = ["bcd", "abc", "cde", "bbb", "faf"]
l7.sort(key = lambda s: s[1])
print l7 #['faf', 'abc', 'bbb', 'bcd', 'cde']

 

———————————————- 见续 Python 基础语法(二) ———————————————-

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/156160.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • git版本管理工具介绍(git管理工具有哪些)

    Git 是一个分布式版本控制工具,它的作者 LinusTorvalds是这样给我们介绍Git —— Thestupidcontenttracker(傻瓜式的内容跟踪器)1、Git背景Git最初由LinusTorvalds编写,用于Linux内核开发的版本控制工具。Git与常用的版本控制工具CVS、Subversion等不同,它采用了分布式版本库的方式,不必服务器端软

  • 数电设计-八路抢答器

    1设计要求设计一个能支持八路抢答的智力竞赛抢答器;主持人按下开始抢答的按键后,有短暂的报警声提示抢答人员抢答开始且指示灯亮表示抢答进行中;在开始抢答后数码管显示30秒倒计时;有抢答人员按下抢答键后,在数码管上显示抢答成功人员的编号,倒计时暂停,同时后续抢答人员的抢答将无效;当主持人再次按下按键回到复位状态,倒计时的数码管保持显示30,显示人员编号的数码管灭,指示灯灭。利用数字电路设计一个八路抢答器,允许八路参加,并具有锁定功能,用LED显示最先抢答的队号码,系统设置外部清除键,按动清除键,LE.

  • Java Eclipse下载安装教程[通俗易懂]

    Java Eclipse下载安装教程[通俗易懂]一、下载:(1)Eclipse是一个开放源代码的项目,其官方网站是www.eclipse.org(2)从首页中单击DOWNLOAD按钮,进入图2所示的页面。(3)点击DownloadPackages,进入Eclipse下载页面。从EclipseIDEforJavaEEDevelopers后面选择适合当前系统的版本,这里单击64bit按钮,…

  • 无名汉化组官网_什么是并查集

    无名汉化组官网_什么是并查集永无乡包含 n 座岛,编号从 1 到 n ,每座岛都有自己的独一无二的重要度,按照重要度可以将这 n 座岛排名,名次用 1 到 n 来表示。某些岛之间由巨大的桥连接,通过桥可以从一个岛到达另一个岛。如果从岛 a 出发经过若干座(含 0 座)桥可以到达岛 b ,则称岛 a 和岛 b 是连通的。现在有两种操作:B x y 表示在岛 x 与岛 y 之间修建一座新桥。Q x k 表示询问当前与岛 x 连通的所有岛中第 k 重要的是哪座岛,即所有与岛 x 连通的岛中重要度排名第 k 小的岛是哪座,请你输出那

  • JDK1.8关于运行时常量池, 字符串常量池的要点[通俗易懂]

    JDK1.8关于运行时常量池, 字符串常量池的要点[通俗易懂]网上关于jdk1.8的各种实验,结论鱼龙混杂,很多都相矛盾,网上有的实验也被后人测试出了不同的结果很多都分辨不了真假,这里记录一下网络上正确的结论,欢迎指正!首先自行区分运行时常量池与Class文件常量池(静态常量池)的概念,JVM内存模型,方法区与永久代的区别,有些在我的其他博客有介绍,连接在文尾在JDK1.7之前运行时常量池逻辑包含字符串常量池存放在…

  • 八、装饰者模式—巴厘岛,奶茶店的困扰! #和设计模式一起旅行#[通俗易懂]

    善于思考,方法总比问题多!故事背景我和漂亮的模式MM来到巴厘岛,这里火山爆发刚刚结束不久,一切要重新开始,来到这个地方几天后,觉得这个地方还是不错,于是就决定在这里开一个奶茶店,因为这里游客比较多,流量大,反正之前我们也没有开店的体验,那么一拍即合,开个奶茶店,体验一下了。 奶茶店的名字:Beautiful Life milk tea!名字起好了,那么我们就开始想如…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号