2.3 Python语言基础

2.3 Python语言基础

1 语言语义(Language Semantics)

缩进,而不是括号

Python使用空格(tabs or spaces)来组织代码结构,而不是像R,C++,Java那样用括号。

建议使用四个空格来作为默认的缩进,设置tab键为四个空格

另外可以用分号隔开多个语句:

a = 5; b = 6; c = 7

所有事物都是对象(object)

在python中,number,string,data structure,function,class,module都有自己的“box”,即可以理解为Python object(对象)。下面所有的对象直接用object来指代。

调用函数和对象的方法

用圆括号

result = f(x,y,z)

动态参考,强类型

不像C++,Java之类的语言,python中object reference是没有自带类型的。但是可以通过type来查看类型:

a = 5
type(a)

int

类型信息存储在这个对象本身。

而python可以看做是强类型,即每一个object都有一个明确的类型。所以下面的运算不会成立。但是Visual Basic会把‘5‘变为整数(int),而JavaScript会把5变为字符串(string)

‘5‘ + 5


TypeError Traceback (most recent call last)

TypeError: Can‘t convert ‘int‘ object to str implicitly

不过像是int与float之间倒是会隐式转换:

a = 4.5
b = 2
print(‘a is {0}, b is {1}‘.format(type(a), type(b)))

a is <class ‘float‘>, b is <class ‘int‘>

a / b

2.25

因为知道每个Object的类型很重要,我们可以用isinstance函数来查看object的类型

a = 5
isinstance(a, int)

True

查看a、b是否是int或float类型

a=5;b=4.5
isinstance(a, (int, float))

True

isinstance(a, (int, float))

True

属性和方法

属性(Attributes)指在当前这个object里,还有一些其他的python object。方法(method)指当前这个object自带的一些函数,这些函数可以访问object里的内部数据。

通过obj.attribute_name可以查看:

a=‘foo‘

a.<Press Tab>

可以通过getattr函数来访问属性和方法:

getattr(a, ‘split‘)

<function str.split>

Duck typing

在程序设计中,鸭子类型(英语:duck typing)是动态类型的一种风格。在这种风格中,一个对象有效的语义,不是由继承自特定的类或实现特定的接口,而是由"当前方法和属性的集合"决定。这个概念的名字来源于由James Whitcomb Riley提出的鸭子测试(见下面的“历史”章节),“鸭子测试”可以这样表述:

“当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。”

在鸭子类型中,关注的不是对象的类型本身,而是它是如何使用的。

比如,如果一个object能够实现迭代原则,那么这个object就是可迭代的。我们可以看这个object是否有__iter__这个magic method。或者自己写一个iter function来检测:

def isiterable(obj):
    try:
        iter(obj)
        return True
    except TypeError: # not iterable
        return False
isiterable(‘a string‘)

True

isiterable([1, 2, 3])

True

isiterable(5)

False

这个功能多用于写一些能接受多种类型的函数。比如我们写一个函数,用接收任何序列(list, tuple, ndarray) 甚至一个迭代器。如果接收的不是一个list,那么我们就人为将其转变为一个list:

if not isinstance(x, list) and isiterable(x): # 如果x不是list,且x可迭代
    x = list(x) # 转变x为list

Import(导入)

比如我创建了一个some_module.py的文件,里面写着:

# some_module.py PI = 3.14159

def f(x):
    return x + 2

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

那么在别的文件里,有多重导入方式:

# 1
import some_module
result = some_module.f(5)
pi = some_module.PI

# 2
from some_module import f, g, PI
result = g(5, PI)

# 3
import some_module as sm
from some_module import PI as pi, g as gf

r1 = sm.f(pi)
r2 = gf(6, pi)

运算符(Binary operators)

用is,和is not, 检查两个引用(references)是否指同一个object,

a = [1, 2, 3]

b = a

c = list(a)
a is b

True

a is not c

True

因为c = list(a)中的list函数创建了一个新的list,所以c是一个新的list,不指向原来的a。

另一个is的常用法是用来检查一个instance是不是none:

a = None
a is None

True

另外像是,+, - ,==, <=, &, |等都也算是运算符,这个就不详细说了,可以直接看这个链接

可更改和不可更改对象(Mutable and immutable objects)

在python的object中,lists, dicts, NumPy arrays, 以及用户自定义的类型(classes), 都是可以更改的。

而string和tuple是不可以更改的:

2 标量类型(scalar types)

这种类型指的是None,str, bytes, float, bool, int

数值型

ival = 123554
ival ** 6

3557466836753811461234217695296

fval = 7.234
fval2 = 5.43e-5
5/2

2.5

#取商
5//2

2

#取余数
5 % 2

1

字符串

a = ‘one way of writing a string‘
b = "another way"
c = """
    This is a longer string that
    spans multiple lines
    """
c.count(‘\n‘) # 有三个回车符

3

字符串类型是不可变的:

a[10] = ‘f‘


TypeError Traceback (most recent call last)

TypeError: ‘str‘ object does not support item assignment

把其他类型转换为字符串:

a = 5.6
s = str(a)
s

‘5.6‘

因为字符串是一连串Unicode字符,所以可以当序列来处理,像list和tuple一样:

s = ‘python‘
list(s)

[‘p‘, ‘y‘, ‘t‘, ‘h‘, ‘o‘, ‘n‘]

s[:3]

‘pyt‘

反斜线用来制定特别的字符,比如回车符\n

s = ‘12\\34‘
print(s)

12\34

可以用前缀r来直接写出想要的字符串格式,而不用输入很多反斜杠:

s = r‘this\has\no\special\characters‘
# 实际的s
s

‘this\has\no\special\characters‘

# 加法用于连接两个字符串
s + s

‘this\has\no\special\charactersthis\has\no\special\characters‘

字符串的模板,或叫做格式化,是一个很重要的课题。string ojecjt有一个format的方法:

template = ‘{0:.2f} {1:s} are worth US${2:d}‘
template

‘{0:.2f} {1:s} are worth US${2:d}‘

在这个string中:

  • {0:.2f} : 第一个参数为float类型,去小数点后两位
  • {1:s}: 把第二个参数变为string类型
  • {2:d}: 把第三个参数变为一个精确的整数
template.format(4.5560, ‘Argentine Pesos‘, 1)

‘4.56 Argentine Pesos are worth US$1‘

原文地址:https://www.cnblogs.com/hankleo/p/9942835.html

时间: 2024-11-05 20:27:38

2.3 Python语言基础的相关文章

为期三天的Python语言基础公开课举行

8月23日,培训中心"Python语言基础及数据分析技术"公开课举行. 来自各企业网络采集.处理和规划的负责人或设计人员十余人参加了本次培训. 本培训将对基于Python语言进行数据处理.数据探索的基本方法,并对Python语言算法原理及实现进行讲解. Python是一种面向对象.解释型计算机程序设计语言,Python是纯粹的自由软件,源代码和解释器CPython遵循 GPL协议.是一个用于统计计算和统计制图的优秀工具,也是GNU的一个免费.源代码开放的软件. Python语法简洁清晰

ArcPy开发教程1-面向ArcGIS的Python语言基础

ArcPy开发教程1-面向ArcGIS的Python语言基础 联系方式:谢老师,135-4855-4328,xiexiaokui#qq.com 第一节课 时间2019年2月26日 上午第一节 讲解:ArcPy概念 操作: IDLE交互式编程 IDLE脚本编程 ArcGIS交互式编程 背景知识:工作空间,Work space: arcgis当前工作路径,包括文件夹,个人地理数据库,文件地理数据库,即数据保存的位置 要素类,Feature class 某一个空间数据,例如道路,河流,居民点,行政边界

Python语言基础与应用 (P16)上机练习:基本数据类型

本文是笔者在学习MOOC课程<Python语言基础与应用> (北京大学-陈斌)中根据上机课时的要求写下在代码 课程总链接: 中国大学MOOC B站 本节课链接 数值基本运算: 33和7+, -, *, /, //, %, **hex(), oct(), bin() 1 Python 3.7.0 (default, Jun 28 2018, 08:04:48) [MSC v.1912 64 bit (AMD64)] :: Anaconda, Inc. on win32 2 Type "

[Python学习笔记1]Python语言基础 数学运算符 字符串 列表

这个系列是我在学习Python语言的过程中记录的笔记,主要是一些知识点汇总,而非学习教程,可供有一定编程基础者参考.文中偏见和不足难以避免,仅供参考,欢迎批评指正. 本系列笔记主要参考文献是官网文档:http://docs.python.org/.在此向文档编辑者致谢.请勿将本文用于商业用途. 一.Python语言介绍 首先,Python是一种广泛应用的通用高级编程语言,具有较高的抽象层次,支持面向对象的编程方法.其具有高级的数据结构和许多方便的库文件,可以完成文件IO.系统调用.网络编程,甚至

(1)python语言基础

===安装=== a>.官网:www.python.org b>.linux系统自带,ubuntu,CentOS,redhat 注:Python3.0比python2.6早,python3.x和pthon2.5不兼容,python2.6之后有个工具python2to3可转换到python3.x.建议使用2.75及以上版本 ===查版本== 直接打python ===打印=== print 'hello,world' ===python解释器=== -CPython 官方标准--动态解释语言(边

一 Python 语言基础应用领域介绍

python是一门动态解释型的强类型定义语言 语言类型分为 1汇编语言 与解释型语言 2动态语言与静态语言 3强类型定义语言和弱类型定义语言 PYTHON 是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年. 我学习python是为什么呢:很简单,听说他是万能的,就这 /开发领域 web开发 Django.pyramid.tornado.bottle.flash.webpy 网络编程 twisted.reuests

Python语言基础

一.Python简介 Python是跨平台动态语言 特点:优雅.明确.简单 适用:web网站和网络服务:系统工具和脚步:包装其他语言开发的模块 不适用:贴近硬件(首选C):移动开发:IOS/Android(objC.swift/Java):游戏:C/C++高速渲染 实际应用:YouTube  豆瓣.搜狐邮箱  OpenStack开源云计算平台 类型 速度 代码 C 编译为机器码 非常快 多 Java 编译为字节码 快 中 Python 不编译,解释执行 慢 少 特点:Python不能加密,发布开

Python语言基础考察点:python语言基础常见考题(一)

一.python是静态还是动态类型?是强类型还是弱类型? 1.动态强类型语言(不少人误以为是弱类型) 不要傻傻分不清 2.动态还是静态指的是编译期还是运行期确定类型 3.强类型指的是不会发生隐式类型转换 若类型语言 强类型语言 4.python作为后端语言优缺点 1.胶水语言.轮子多.应用广泛 2.语言灵活.生产力高 3.性能问题.代码维护问题.python2/2兼容问题 动态语言一时爽.代码重构火葬场 二.什么是鸭子类型 当看到一只鸟走起来想鸭子.有用起来像鸭子.叫起来也想鸭子.那么这只鸟就可

Python语言基础知识的易错点和易遗漏点

一.number型数据有:int  bool  float complex(复数) 容器型数据: tuple list dict  str set 一.三引号 可以支持多行输出不用换行符 二.r“字符串内容” 可以将特殊字符原样输出,而不用转义,应用场景是文件的路径和用户输入 eg:r“/xammp/MySQL/bin” 三.字符串(即可看做number型又可看做容器型) str有序(可用下标获取),不能改变 四.元组的运算符 “   ,”    元组中只有一个元素时要加逗号,否则类型为该元素类