变量与运算符

Python变量与运算符精讲
本文深入解析Python中的变量命名规则、值类型与引用类型的区别,以及列表和元组的可变性。同时,全面介绍了各类运算符,包括算术、赋值、比较、逻辑、成员、身份和位运算符,并提供了如何判断变量值、身份与类型的实用方法。

1、变量

变量类似名字,把一个数据赋值给一个变量,变量名尽量有意义、可读性强
例:

skill = ['新月打击','苍白之瀑']

1) 命名规则

① 数字、字母、下划线,但不能以数字开头
② 系统(保留)关键字不能作为变量名
③ 严格区分大小写
④ 变量本身没有类型
⑤ 两个单词组合的命名方式用 “_” 连接,不推荐用驼峰命名方式

2) 值类型与引用类型

例:

a = 1
b = a
a = 3
print(b)
1

a = [1,2,3,4,5]
b = a
a[0] = '1'
print(a)
['1', 2, 3, 4, 5]
print(b)
['1', 2, 3, 4, 5]

值类型(不可改变):int str tuple
引用类型(可变): list set dict
id():获取对象的内存地址

3) 列表的可变与元祖的不可变

append():在列表末尾添加新的对象
例:

a = [1,2,3]
print(id(a))
a[0] = '1'
print(id(a)) # 内存地址没有改变 list是可变的

a = (1,2,3)
# a[0] = '1' 会报错 tuple是不可变的

b = [1,2,3]
b.append(4)
print(b)
[1,2,3,4]

4) 运算符号

① 算术运算符

+
-
*
/
//:整除,返回商的整数部分(向下取整
% :取模,返回除法的余数
** :幂

② 赋值运算符

运算符描述实例
=简单的赋值运算符c = a + b 将 a + b 的运算结果赋值为 c
+=加法赋值运算符c += a 等效于 c = c + a
-=减法赋值运算符c -= a 等效于 c = c - a
*=乘法赋值运算符c *= a 等效于 c = c * a
%取模赋值运算符c %= a 等效于 c = c % a
**=幂赋值运算符c **= a 等效于 c = c ** a
//=取整除赋值运算符c //= a 等效于 c = c // a

③ 比较(关系)运算符

a = 10 ,b = 20

运算符描述实例
==等于,比较对象是否相等(a == b) 返回 False
!=不等于,比较两个对象是否不相等(a != b) 返回 True
>大于,返回a是否大于b(a > b) 返回 False
<小于,返回a是否小于b(a < b) 返回 True
>=大于等于,返回a是否大于等于b(a >= b) 返回 False
<=小于等于,返回a是否小于等于b(a <= b) 返回 True

不是只有数字才能做比较运算,str list tuple…都可以
str之间的比较是比较ASCII,多个字符串之间的比较,是依次比较ASCII

④ 逻辑运算符

and 且、与 左右两边都为真时,返回真
or 或 左右两边有一个为真时,返回真
not 非 判断一个对象,为True时,返回False
本质:操作类型和返回类型都为bool

⑤ 成员运算符

in:如果在指定的序列中找到值返回True,否则返回False
not in:如果在指定的序列中没有找到值返回True,否则返回False
如果序列是dict的话,查找的是dict中的key,而不是value
例:

b = 'a'
print(b in {'c':1})
False

b = 1
print(b in {'c':1})
False

b = 'c'
print(b in {'c':1})
True

⑥ 身份运算符

is:比较两个对象的内存地址是否相同,类似id(m) == id(n),相同返回True,否则返回False
not is:比较两个对象的内存地址是否不相同,不相同返回True,否则返回False

⑦ 位运算符

把数字当做二进制进行运算

运算符描述
&按位与:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0
|按位或:只要对应的二个二进位有一个为1时,结果位就为1
^按位异或:当两对应的二进位相异时,结果为1
~按位取反:把一个数据的每个二进制位取反,即把1变味0,0变为1
<<左移动:把一个数据的各二进位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃, 低位补0
>>右移动:把一个数据的各二进位全部右移若干位,由">>"右边的数指定移动的位数,低位丢弃, 高位补0

⑧ 如何判断变量的值、身份与类型

isinstance(m,n):判断对象的类型,m是需要判断的对象,n是判断的类型;n可以是一个元祖,里面放入想要判断的所有类型
对象的三个特征id(身份)、value(值)、type(类型)
分别判断三个特征的方式:is==isinstance

<think>好的,用户想了解C++中变量声明、使用和运算符的示例。首先,我需要回顾一下C++的基础知识,确保自己记得正确。 变量声明方面,C++需要指定类型,比如int a = 5;。然后初始化可以是直接赋值或者用构造函数,比如double b(3.14);。用户可能也需要知道C++11之后的统一初始化方式,比如string s{"Hello"},这个在示例中可以提到。 接下来是运算符部分,用户提到了运算符重载,参考里有个例子是关于Student类重载+运算符,允许对象和整数相加。我应该解释运算符重载的基本概念,比如如何通过成员函数或友元函数实现,并给出示例代码。比如,成员函数的话,参数少一个,因为隐含this指针;如果是友元函数,就需要两个参数。需要区分前置和后置++的区别,后置会带一个int参数。 用户提供的引用中,有一个运算符重载的例子,参数是Student和int,或者反过来,所以需要说明运算符的参数顺序决定了操作数的置。比如,stu+8和8+stu需要同的重载函数,因为第一个参数类型同。另外,引用中还提到了typeid运算符,可能用户对类型检查也有兴趣,可以在相关问题里提到。 然后,用户可能还需要了解基本的运算符使用,比如算术运算符、赋值运算符、比较运算符等。可以举一些简单例子,比如int相加,字符串连接等。同时,运算符优先级的问题可能也是需要注意的,但用户的问题可能更关注基础使用,所以优先级可能需要深入,除非用户特别问。 在组织回答时,需要分点:变量声明初始化、运算符基础、运算符重载,每部分给出示例代码。示例代码要符合C++语法,比如使用正确的头文件、main函数结构等。同时,注意用户提到的系统级指令,比如行内公式用$...$,独立公式用$$...$$,但这里可能涉及代码较多,数学公式可能较少,过如果有涉及运算表达式,比如a + b,可以用行内公式格式。 然后生成相关问题,可能需要包括变量作用域、const变量、类型推断(auto)、运算符优先级、typeid的使用,以及更多运算符重载的例子,比如重载<<用于输出。这样用户可以有进一步的学习方向。 检查是否有遗漏,比如变量声明的置(全局、局部),变量的生命周期,或者存储类说明符(static, extern等),但用户的问题可能更基础,所以先集中在声明、初始化和运算符的基本使用和重载上。 最后确保引用正确,用户提供的引用[1]关于运算符重载,引用[2]关于typeid,所以在回答中提到运算符重载时引用[^1],提到类型检查时引用[^2]。</think>以下是对C++变量声明、使用及运算符的详细说明: --- ### 一、变量声明初始化 1. **基本语法** 变量声明格式:`数据类型 变量名 [= 初始值]` 示例: ```cpp int a = 5; // 声明并初始化整数变量 double b(3.14); // 使用构造函数语法初始化 std::string s{"Hello"}; // C++11统一初始化语法 ``` 2. **类型推断(C++11)** 使用`auto`关键字自动推导类型: ```cpp auto x = 10; // x的类型为int auto y = 3.14; // y的类型为double ``` --- ### 二、运算符基础用法 1. **算术运算符** ```cpp int a = 10, b = 3; int sum = a + b; // 加法:13 int mod = a % b; // 取模:1 ``` 2. **赋值运算符** ```cpp a += 5; // 等价于 a = a + 5 ``` 3. **比较运算符** ```cpp bool isEqual = (a == b); // 判断是否相等 ``` --- ### 三、运算符重载(自定义类型操作) 通过重载运算符实现自定义类型的操作: 1. **成员函数形式** ```cpp class Student { public: int age; Student operator+(int num) { return Student{age + num}; } }; Student stu{20}; Student result = stu + 5; // 调用stu.operator+(5) ``` 2. **友元函数形式(支持交换操作数顺序)** ```cpp class Student { public: int age; friend Student operator+(int num, const Student& stu) { return Student{num + stu.age}; } }; Student stu{20}; Student result = 5 + stu; // 调用友元函数 ``` 3. **自增运算符重载** ```cpp class Counter { public: int value; Counter& operator++() { // 前置++ ++value; return *this; } Counter operator++(int) { // 后置++ Counter temp = *this; ++value; return temp; } }; ``` --- ### 四、类型检查运算符 使用`typeid`检查变量类型: ```cpp #include <typeinfo> int i = 10; char c = 'a'; if (typeid(i) == typeid(int)) { std::cout << "i是int类型"; } ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值