python语法总结1-语言语义

本文详细介绍了Python的基础语法,包括数值类型(int和float)、字符串(不可变特性)、布尔型、标量类型、类型转换、二元运算符和比较运算符。此外,还讲解了可变与不可变对象的区别,如列表和元组的变与不变,以及None空值类型。进一步探讨了日期和时间的处理,以及Python中万物皆对象的概念,包括函数调用、方法调用和变量按引用传递。最后,提到了属性、方法、迭代器协议以及如何导入和使用其他文件的函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文是回过头来对python中基本语言语义的一个总结。

目录

 

数值类型

字符串类型  

布尔型  

标量类型  

类型转换

二元运算符和比较运算符   

可变和不可变对象   

None空值类型   

日期和时间   

万物皆对象

函数调用和对象方法调用  

变量和按引用传递  

属性和方法    

引入其他文件的函数


数值类型

Python的主要数值类型是int和float。int可以存储任意(泛指)大的数:

示例:

ival = 17239871
print(ival**6)  
#输出: 26254519291092456596965462913230729701102721

 

字符串类型  

对于字符串,既可以用单引号又可以用双引号 。 对于带有换行符的多行字符串,可以使用三重引号(即''' 或""")  。

示例:

c = """
This is a longer string that
spans multiple lines
"""
print(c)
This is a longer string that
spans multiple lines

示例2:

 注意: python 的字符串是不可变的,要修改字符串只能创建一个新的


a = 'this is a string'
# a[10] = 'f' # 此会 报错 # TypeError: 'str' object does not support item assignment
b = a.replace('string', 'longer string')  #  字符串的replace函数返回替换后的结果。注意由此也可以推断,replace函数并不会改变原对象,因为字符串并不可改变
print(b)
输出: this is a longer string  

注意: 反斜杠(\) 是转义符(escape character),也就是说,它可以用于指定特殊字符(比如新行\n或unicode 字符)。要编写带有反斜杠的字符串字面量,也需要对其进行转义  

s='12\\34' # 带有反斜杠进行转义
print s 
c='12\n34'
print c  
print("***"*13)
# 注意  如果字符串带有很多反斜杠且没有特殊字符,则可以在字符串最左边引号的前面加上 r ,它表示所有字符应该按照原本的样子进行解释   
s=r'this\has\no\special\characters'
print(s) # 注意输出时,带着\

输出: 

12\34
12
34
***************************************
this\has\no\special\characters

布尔型  

即真假类型,可以与1,0相互转换。 

print(bool([]), bool([1, 2, 3])) # 此[] 没有加list
print(bool(list([])), bool([1, 2, 3])) # 此 [] 外面加了一个list, 注意,主要【】里面为空,无论加没有都是非真 
print(bool('Hello world!'), bool(''))
print(bool(0), bool(1)) # bool(0) 为false
输出:
(False, True)
(False, True)
(True, False)
(False, True)

标量类型  

Python的标准库中有一些内建的类型,用于处理数值数据、字符串、布尔值,和日期时间。这些单值类型被称为标量类型。

类型转换

s = '3.14159'
fval = float(s)
print(type(fval))
print(int(fval))
print(bool(fval))
print(bool(0))
输出:
<type 'float'>
3
True
False

二元运算符和比较运算符   

基于python2.7的语法  

 

可变和不可变对象   

Python中的大多数对象,比如列表、字典、NumPy数组,和用户定义的类型(类),都是可变的。意味着这些对象或包含的值可以被修改:而字符串和元组则是不可变的。注意元组的不可变只是里面元素的引用不可变。但如果元组的元素是一个可变的引用对象时,如list,则这个list里本身是可变的

# 元组不可变
a_tuple=(3,4,[4,5])
# a_tuple[1]='four' # 此会报错,元素的元组不可变   # TypeError: 'tuple' object does not support item assignment
a_tuple[2].append('inlist')
print(a_tuple)  # 这个是可变的   (3, 4, [4, 5, 'inlist'])

输出:(3, 4, [4, 5, 'inlist'])

None空值类型   

None 是Python 的空值类型,如果一个函数没有显示的返回值,则隐式返回 None.

a=[]
print(bool(a))
print(a is None) # 注意 [] 虽然非真,为假,但并非为None 空值

输出:False False

日期和时间   

from datetime import datetime, date, time
dt = datetime(2011, 10, 29, 20, 30, 21)
print(dt.day)
print(dt.minute)
29
30
print(dt.date())
print(dt.time())
print(dt.strftime('%m/%d/%Y %H:%M'))

输出: 

2011-10-29
20:30:21
10/29/2011 20:30

万物皆对象

python语言的一个重要特点就是其对象模型的一致性。 无论是变量还是函数,都是对象。

函数调用和对象方法调用  

result = f(x, y, z)    
g()   
obj.some_method(x,y,z)     
result=f(a,b,c,d=5,e='foo')

变量和按引用传递  

在python 中 对变量赋值时,其实是在创建一个等号右侧对象的一个引用 .
当将对象以参数的形式传入函数时,其实也是传的引用,不会发生任何复制,因此,python函数 被称为是按引用传递的。

a=[1,2,3]
# 加入将a 赋值给一个新变量b  
b=a  
a.append(4)
print(a)
print(b) #  注意 发现b即使没有没显示变化,但是b 也随着a 改变了。也是输出[1,2,3,4] . 这是因为在python中,用a 对b赋值时,传给b的是a 的引用,a 和  b  都指向同一个对象。

注意 发现b即使没有没显示变化,但是b 也随着a 改变了。也是输出[1,2,3,4] . 这是因为在python中,用a 对b赋值时,传给b的是a 的引用,a 和  b  都指向同一个对象。

输出: [1, 2, 3, 4] [1, 2, 3, 4]

def append_element(somelist,element):
    somelist.append(element)
    # 注意此处并没有返回值
data=[1,2,3]
append_element(data,4) # 
print(data) # 注意data已经被改变了,虽然data并没有被显示返回和复制,但是由于参数传的是引用,在函数中做了改变,所以其全局也改变了
[1, 2, 3, 4]

属性和方法    

要一个对象实现了 迭代器协议,就可以确认它是可迭代的。对于大部分对象而言,这就意味着它拥有一个iter魔术方法。一个更好的验证方法就是尝试使用iter函数

# 迭代类型 
def isiterable(obj):
    try:
        iter(obj)
        return True
    except TypeError: # 不可迭代
        return False
print(isiterable(5))
print(isiterable([1,2,3]))

输出: False  True 

引入其他文件的函数

在python 中,模块module 就是一个含有函数和变量定义以及从其他.py文件引入的此类东西.py文件。

st="""
PI = 3.14159

def f(x):
    return x + 2

def g(a, b):
    return a + b
"""
with open('./some_module.py','w') as f :
    f.write(st)

同目录下调用:

import some_module
result = some_module.f(5)
pi = some_module.PI 
print(result,pi)

输出  

8.14159

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值