变量:

Python 是动态类型语言, 也就是说不需要预先声明变量的类型。变量是对象的引用,变量只是将指针指向了对象所在的内存地址。变量的类型和值在赋值那一刻被初始化。
变量起名:
1.显式-->通俗易懂
2.nums_of_alex_gf = 19
3.NumsOfAlexGf = 20 驼峰写法
4.中横线不能作为变量的命名字符
5.数字不能作为开头,但可以在中间或者结尾
6.特殊字符不能作为变量名的组成部分
7.不能使用空格
8.关键字不能声明为变量

变量赋值

Python中的变量不需要声明,变量的赋值操作既是变量声明和定义的过程。

每个变量在内存中创建,都包括变量的标识,名称和数据这些信息。

每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。

等号(=)用来给变量赋值。

等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值。

多个变量赋值

Python允许你同时为多个变量赋值。例如:

a = b = c = 1

以上实例,创建一个整型对象,值为1,三个变量被分配到相同的内存空间上。

您也可以为多个对象指定多个变量。例如:

a, b, c = 1, 2, "john"

以上实例,两个整型对象1和2的分配给变量a和b,字符串对象"john"分配给变量c。

问题:

现在有一个包含N 个元素的元组或者是序列,怎样将它里面的值解压后同时赋值
给N 个变量?

任何的序列(或者是可迭代对象) 可以通过一个简单的赋值语句解压并赋值给多个
变量。唯一的前提就是变量的数量必须跟序列元素的数量是一样的。

>>> p = (4, 5)
>>> x, y = p
>>> x
4
>>> y
5
>>>
>>> data = [ 'ACME', 50, 91.1, (2012, 12, 21) ]
>>> name, shares, price, date = data
>>> name
'ACME'
>>> date
(2012, 12, 21)
>>> name, shares, price, (year, mon, day) = data
>>> name
'ACME'
>>> year
2012
>>> mon
12
>>> day
21
>>>

这种解压赋值可以用在任何可迭代对象上面,而不仅仅是列表或者元组。
包括字符串,文件对象,迭代器和生成器。

有时候,你可能只想解压一部分,丢弃其他的值。对于这种情况Python 并没有提
供特殊的语法。但是你可以使用任意变量名去占位,到时候丢掉这些变量就行了。

>>> data = [ 'ACME', 50, 91.1, (2012, 12, 21) ]
>>> _, shares, price, _ = data
>>> shares
50
>>> price
91.1

问题:

如果一个可迭代对象的元素个数超过变量个数时,会抛出一个ValueError 。那么
怎样才能从这个可迭代对象中解压出N 个元素出来?

Python 的星号表达式可以用来解决这个问题。

>>> record = ('Dave', 'dave@example.com', '773-555-1212', '847-555-1212')
>>> name, email, *phone_numbers = record
>>> name
'Dave'
>>> email
'dave@example.com'
>>> phone_numbers
['773-555-1212', '847-555-1212']

星号表达式也能用在列表的开始部分。比如,你有一个公司前8 个月销售数据的序
列,但是你想看下最近一个月数据和前面7 个月的平均值的对比。你可以这样做:
*trailing_qtrs, current_qtr = sales_record
trailing_avg = sum(trailing_qtrs) / len(trailing_qtrs)
return avg_comparison(trailing_avg, current_qtr)
下面是在Python 解释器中执行的结果:
>>> *trailing, current = [10, 8, 7, 1, 9, 5, 10, 3]
>>> trailing
[10, 8, 7, 1, 9, 5, 10]
>>> current
3

值得注意的是,星号表达式在迭代元素为可变长元组的序列时是很有用的。比如,
下面是一个带有标签的元组序列:
records = [
('foo', 1, 2),
('bar', 'hello'),
('foo', 3, 4),
]
def do_foo(x, y):
    print('foo', x, y)
def do_bar(s):
    print('bar', s)
for tag, *args in records:
    if tag == 'foo':
         do_foo(*args)
    elif tag == 'bar':
         do_bar(*args)

foo 1 2
bar hello
foo 3 4

星号解压语法在字符串操作的时候也会很有用,比如字符串的分割。

代码示例:
>>> line = 'nobody:*:-2:-2:Unprivileged User:/var/empty:/usr/bin/false'
>>> uname, *fields, homedir, sh = line.split(':')
>>> uname
'nobody'
>>> homedir
'/var/empty'
>>> sh
'/usr/bin/false'

有时候,你想解压一些元素后丢弃它们,你不能简单就使用* ,但是你可以使用一
个普通的废弃名称,比如或者ign 。
代码示例:
>>> record = ('ACME', 50, 123.45, (12, 18, 2012))
>>> name, *_, (*_, year) = record
>>> name
'ACME'
>>> year

2012

在很多函数式语言中,星号解压语法跟列表处理有许多相似之处。比如,如果你有
一个列表,你可以很容易的将它分割成前后两部分:
>>> items = [1, 10, 7, 4, 5, 9]
>>> head, *tail = items
>>> head
1
>>> tail
[10, 7, 4, 5, 9]
>>>
如果你够聪明的话,还能用这种分割语法去巧妙的实现递归算法。比如:
>>> def sum(items):
... head, *tail = items
... return head + sum(tail) if tail else head
...
>>> sum(items)
36

python3--(变量)的更多相关文章

  1. python3变量和数据类型

        变量和数据类型 知识点 python 关键字 变量的定义与赋值 input() 函数 字符串的格式化 实验步骤 每一种编程语言都有它们自己的语法规则,就像我们所说的外语. 1. 关键字和标识符 ...

  2. python3 变量理解 解释器理解 常量理解 用户交互理解 逻辑运算

    先来条NLP再说...... 九,每人都已经具备使自己快乐的资源 每一个人都有过成功快乐的体验,也即是说有使自己快乐的能力. 人类只用了大脑能力极少部分,提升大脑的运用,很多新的突破便会出现. 运用大 ...

  3. 3.Python3变量与基本数据类型

    3.1保留字和标识符 3.1.1保留字 保留字是Python语言中已经被赋予特定意义的一些单词,开发程序时不可以把保留字作为变量.函数.类.模块和其他对象的名称来使用.保留字如下: 3.1.2标识符 ...

  4. python3 变量

    python 3变量名不能以数字开头但能数字结尾 变量名大小写敏感 在多个单词组成的变量名中以下划线间隔

  5. python3 变量格式化转换成字符串

    num=3 str='I am %f years old' % (num) print(str) 输出 I am 3.000000 years old

  6. 一文读懂ES6(附PY3对比)

      Ⅰ.ES6~POP¶ 代码示例:https://github.com/lotapp/BaseCode/tree/master/javascript/1.ES6 在线演示:https://githu ...

  7. 6 小时 Python 入门

    6 小时 Python 入门 以下操作均在 Windows 环境下进行操作,先说明一下哈 一.安装 Python 1.官网下载 Python 进入官网(https://www.python.org), ...

  8. Python3学习(一)-基础、数据类型、变量、字符串和编码、list&tuple、if、for、while、dict、set、函数与参数

    ##廖雪峰py3笔记 ## '//'这是获得相除后的整数部分 ##a = 10//3 ##print (a) ## '/'获得相除后的结果,为浮点数,结果能整除也也是浮点数 ##b = 10/3 ## ...

  9. Python3.5 入门学习记录——变量类型

    前面介绍了如何下载和安装Python3.5的环境,安装好了后开始进行练习,仍然是最基础的使用Python解释器进行Coding,由于我也是初学Python,也是根据网上其他的教程一点一点练习,然后归纳 ...

  10. python解释器的安装;python2与python3同时在环境变量中时的解决方案

    新文档 html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,addres ...

随机推荐

  1. c# List<string>和List<int>互相转换

    List<string> 转 List<int> var list = (new[]{"1","2","3"}).T ...

  2. 关于AutoCAD.NET的辅助方法

    求中点坐标: /// <summary> /// 中点 /// </summary> /// <param name="StartPoint"> ...

  3. hdu1867A + B for you again

    Problem Description Generally speaking, there are a lot of problems about strings processing. Now yo ...

  4. Android 判断听云是否嵌入正确

    编译打包成apk之后,将apk在手机上进行安装,连接数据线,打开命令行,输入以下命令: adb logcat -v time -s NBSAgent:V 之后运行嵌入听云代码的app,进行有效的网络访 ...

  5. Android_实现静默安装和卸载应用

    转:http://www.cnblogs.com/ondream/archive/2012/04/13/2446138.html 前段时间做了一个批量安装卸载应用程序的小应用,由于安装卸载应用程序的部 ...

  6. Android02-Activity01

    1.概念:活动是一种可以包含用户界面的组件, 主要用于和用户进行交互. 2.常见操作:      1.隐藏Activity的标题栏: @Override protected void onCreate ...

  7. oracle面试

    1. Oracle跟SQL Server 2005的区别? 宏观上: 1). 最大的区别在于平台,oracle可以运行在不同的平台上,sql server只能运行在windows平台上,由于windo ...

  8. Unix/Linux环境C编程入门教程(18) kali-linuxCCPP开发环境搭建

    1. Kali linux是BT5的晋级版本,用于信息安全.基于Debian7内核.新建虚拟机. 2. 选择默认虚拟机 3. 选择稍后安装操作系统 4.选择Linux Debian7 64位,因为Ka ...

  9. 第52周二Restful

    今天去spring官网发现一个关键词:Restful,以前只在与一个系统对接时用到过这种形式的接口,但印象不深,百度搜索后才感觉自己太out了,这个概念2000年提出,2009年时国内就有很多人推荐使 ...

  10. Go语言Eclipse开发环境配置-Windows

    1.首先安装eclipse,选择一个适合的版本就好,解压即可 http://www.eclipse.org/downloads/ 2.下载go语言安装包 官网地址 :http://www.golang ...