目录
Python语法基础
在本篇中将概述基本的Python概念和语言机制。
语言的语义
Python的语言设计强调的是可读性,简洁和清晰
使用缩进而不是括号
Python使用空白字符(tab和空格)来组织代码,而不是像其他语言,比如R,C++,JAVA和Perl那样使用括号。
看一个排序算法的for循环:
for x in array:
if x in pivot:
less.append(x)
else:
greater.append(x)
冒号标志着缩进代码块的开始,冒号之后的所有代码的缩进量必须相同,直到代码块结束。
我很喜欢Python的一点就在这里,用空格代替括号使得整个代码都简洁美观,不会像别的语言那样可能漏掉括号。大多数人都是使用四个空格,建议你也是。
python的语句不需要用分号结尾。但是分号可以用来给同一行的语句切分:
a = 5; b = 6; c = 7
不建议将多条语句放到一行,会降低代码的可读性。
万物皆对象
每个数字,字符串,数据结构,函数,类,模块等,都被认为是Python对象。每个类型都有类型(例如,字符串或函数)和内部数据
注释
任何前面带有‘#’号的文本都会被Python解释器忽略
# a = 1
# for i in range(10):
b = 2
你可以通过注释的方法排除一段代码但不删除
函数和对象方法调用
可以用圆括号调用函数,传递零个或几个参数,或者将返回值给一个变量
result = f(x, y, z)
g()
几乎Python中的每个对象都有附加的函数,称作方法,可以用来访问对象的内容
obj.some_method(x, y, z)
obj是对象,some_method是这个对象的方法 函数可以使用位置和关键词参数:
result = f(a, b, c, d=5, e='foo')
a,b,c是位置参数,d,e是关键字参数
变量和参数传递
在Python中创建变量,你就在等号右边创建了一个对这个变量的引用。
a = [1, 2, 3]
假设将a赋值给一个新变量b:
b = a
我们把4放入a的列表中
a.append(4)
这时候查看一下b,你会发现b也变成了[1, 2, 3, 4]
你可能会疑惑,我明明只往a里放了4,b里怎么也出现了4。其实在Python中,a和b是同一个对象,即原有列表[1, 2, 3]。a和b都引用(绑定)了同一个对象。
对同一对象的双重引用
理解Python的引用含义很重要,知道数据是何时,如何复制的。
当你将对象作为参数传递给函数时,新的局域变量创建了对原始对象的引用,而不是复制。因此可以改变可变参数的内容。假设一个函数:
def append_element(some_list, element):
some_list.append(element)#将一个元素添加到some_list中
In [1]: data = [1, 2, 3]
In [2]: append_element(data, 4)
In [3]: data
Out[3]: [1, 2, 3, 4]
如果你会c++的指针或引用苹果分析数据代码含义,应该很好理解;如果不会的话,你可以这么想,如果你改变了一个变量引用(绑定)的对象,那所有引用(绑定)这个对象的变量都变了,因为他们都指向同一个对象。
动态引用
与许多编译语言(如Java和c++)对比,Python中的对象引用不包含附属的类型。在Python中下面的代码是没有问题的:
In [1]: a = 5
In [2]: type(a)#查看数据类型
Out[2]: int
In [3]: a = 'foo'
In [4]: type(a)
Out[4]: str
属性和方法
Python的对象通常都有属性(存储在对象内部的对象)和方法(可以访问对象内部数据的附属函数)。可以用obj.attribute_name访问属性和方法
引入
在Python中,模块就是有.py扩展名,包含Python代码的文件,假设有一个some_module.py文件
#some_module.py
PI = 3.14159
def f(x):
return x + 2
def g(a, b):
return a + b
如果想从同目录下的另一个文件访问some_mdule.py中定义的变量和函数:
import some_module
result = some_module.f(5)
pi = some_module.PI
或者:
from some_module import f, g, PI
result = g(5, PI)
使用as关键词,可以给引入起不同的变量名
import some_module as sm
from some_module import PI as pi, g as gf
import pandas as pd
二元运算符和比较运算符
大多数都比较简单,你肯定想得到,直接放表格
可变与不可变对象
Python中大多数对象,比如列表,字典,Numpy数组和用户定义的类型都是可变的。其他的,例如字符串和元组,不可变
a_tuple = (3, 5, (4, 5))#元组
数值类型
数值类型有整形(int)和浮点型(float),浮点型可以用科学计数法表示
fval = 7.243
fval2 = 6.78e-5
除法和C语言不太一样:
3 / 2
会得到1.5,如果是两个斜杠//
3 // 2
则会像c语言一样抛弃小数部分得到1
字符串
Python中的字符串比C语言中简单且灵活许多,可以用单引号或双引号来写字符串(这也和C语言不一样)
a = 'one way of writing a string'
b = "another way"
对于要换行的字符串苹果分析数据代码含义,可以用三引号
c = """
This is a longer string
that
spans
"""
将两个字符串合并会产生新的字符串
In [1]: a = 'I really'
In [2]: b = 'really like'
In [3]: c = 'you'
In [4]: a + b + c
Out[4]: 'I really really like you'
字符串对象有format方法,可以替换参数为字符串
In [1]: '{0:s} 价值 {1:d} rmb'.format('iPhone12', 5000)
Out[1]: 'iPhone12 价值 5000 rmb‘
{0:s}表示第1个参数是字符串,{1:d}表示第2个参数是整数。大致说一下,后面还会遇到。
布尔值
这个也简单,True真和False假
类型转换
str,bool,int和float也可以用来类型转换
In [1]: s = '3.14159'
In [2]: fval = float(a)
In [3]: type(fval)
Out[3]: float
In [4]: int(fval)
Out[4]: 3
In [5]: bool(fval)
Out[5]: True
控制流
if, elif 和 else
if语句检查条件,满足则执行后面语句
if x < 0:
print('negative)
if后面可以加elif,所有条件不满足最后可以加else
if x 0')
for循环
for 循环在一个集合中迭代
sequence = [1, 2, None, 4, None, 5]
for value in sequence:
if value is None:
continue
使用continue可以跳过当前迭代的剩下部分,进行下一轮迭代
sequence = [1, 2, None, 4, None, 5]
for value in sequence:
if value is None:
break
使用break则会跳出for循环,不仅跳过当前迭代的剩下部分,接下来几轮迭代也跳过了
while循环
while循环指定了条件和代码,当条件为False时退出循环
total = 0
while total > 100:
total += 1
pass
意思是什么都不做,代码块不需要任何动作时使用
if x > 0:
pass
range
range函数返回一个迭代器,产生均匀分布的整数序列
In [1]: list(range(10))
Out[1]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
range三个参数(起点,终点,步伐大小)
In [1]: list(range(0, 20, 2)
Out[1]: [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
In [2]: list(20, 0, -2)
Out[2]: [20, 18, 16, 14, 12, 10, 8, 6, 4, 2]
三元表达式
Python中的三元表达式可以将if-else语句放到一行里
x = 5
a = 'positive' if x > 0 else 'negative'
限时特惠:本站每日持续更新海量设计资源,一年会员只需29.9元,全站资源免费下载
站长微信:ziyuanshu688