Python学习中遇到的问题

1.None和[]的区别

以前以为None就是空,直到看到了下面这段代码

list=[]
if list is None:
    print "list is NULL"
else:
    print "list is %s"  %list

发现输出是list is [],而不是list is NULL。这说明None和[]不等同
去翻了几篇博客后,才知道None表示的是这个对象还没创建,而[]表示的是这个对象创建了,但是还没有值。
“一个盒子不装东西它还是一个盒子([]),你把盒子拆了它就是none了”

2.关于可变对象和不可变对象的理解

果然学习一门语言就要换一种方式来对待它。
看代码:

x = 12323
y = 12323
z = 12323

print id(x)
print id(y)
print id(z)

#输出:
50747600
50747600
50747600
#
print x is y
print y is z

#True
True#

我和伙伴们都惊呆了。。
python里的对象分为可变对象和不可变对象(python万物皆对象)。

  • 不可变对象有:int、字符串(string)、float、(数值型number)、元组(tuple)。
    可变对象有:字典型(dictionary)、列表型(list)。

    我对不可变对象的理解就是给这个对象赋值之后,对象的值就不可以更改了,如果想改变对象的值,它会另外创造一个对象,把值赋给这个新对象,然后把变量名与之绑定。
    看图:
    在这里插入图片描述
    不可变对象的优点:
    减少了相同值对内存的占用。
    缺点:我要修改这个变量绑定的值,如果内存中没用存在该值的内存块,那么必须重新开辟一块内存,把新地址与变量名绑定。而不是修改变量原来指向的内存块的值,这回给执行效率带来一定的降低。

  • 可变对象,自然就是说,可以在原来基础上去改变值。
    -在这里插入图片描述

  • 我们来看两个函数:

def f(a, L = []):
    L.append(a)
    print id(L)
    return L

print f(1)
print f(2)
print f(3)


#
[1]
[1, 2]
[1, 2, 3]
#
def f(a, L = None):
    if(L is None):
        L = []
    L.append(a)
    return L

print f(1)
print f(2)
print f(3)

#
[1]
[2]
[3]
#

第一个代码的输出,是因为L是可变对象,它被创建了之后,第二次调用的时候,我们发现,L存在,所有就不会重新创建(没有执行L=[]),所以会在原来的基础上放进去一个2.
第二个代码的输出,是因为每次L都被置为None了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python学习页面与数据交互主要涉及以下几个方面的内容: 1. **基础Python语法**:首先,你需要掌握Python的基本语法,包括变量、数据类型(如数字、字符串、列表、字典等)、控制流(if-else、for循环、while循环)以及函数定义。 2. **数据结构和算法**:了解Python内置的数据结构,如列表、元组、集合和字典,以及如何使用它们进行高效的存储和操作。算法是数据交互的核心部分,涉及搜索、排序、递归等概念。 3. **文件和网络I/O**:学习如何在Python读写文件,以及使用socket、requests库进行网络请求,处理HTTP/HTTPS协议下的数据交互。 4. **API接口调用**:熟悉如何使用Python进行API调用,包括JSON数据解析、POST/GET请求、OAuth授权等。 5. **数据库操作**:Python有许多数据库连接库,如sqlite3、pymysql、psycopg2等,学习如何连接数据库,执行SQL查询,并处理数据。 6. **数据可视化**:学会使用Matplotlib、Seaborn或Plotly等库创建图表,将数据转换为易于理解的形式。 在学习过程可能会遇到问题和解决方法: 1. **安装和配置问题**:确保已正确安装Python和相关库,可以查阅官方文档或使用pip工具管理依赖。 2. **理解概念困难**:对于一些复杂的概念,可以尝试找一些实例教程,通过实践加深理解。 3. **错误调试**:学会阅读和理解错误信息,使用`try-except`语句进行异常处理,使用debugger工具进行逐步调试。 4. **性能优化**:对大量数据处理时,可能需要学习更高效的数据结构和算法,或者使用异步IO等技术提高性能。 5. **文档理解和版本更新**:API和库的文档可能会有变动,保持更新学习资料以适应最新版本。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值