让我们和python一起“动”起来

让我们和python一起“动”起来

  在上文一切皆对象中提到了python的变量a,并且特地指出它还有个叫法:标签。其实无论是叫“变量”还是叫“标签”都没特定的要求,叫它“变量”只是延续之前的编程习惯,叫它“标签”则是由python的动态特性决定的。

  在此就C语言的“变量”与python的“标签”作个比较。C语言的变量在使用前需要对变量进行类型声明,而python的标签(变量)可以 直接使用,无需对标签(变量)进行类型声明,赋值给这个标签(变量)的对象是什么类型,它就是什么类型。

C语言:

main()
{
    int a;
    char c;

    a = 1;
    c = ‘s‘;
}

python:

a = 1
c = ‘s‘

再来看看python交互式命令行中的运行结果:

  C语言的变量在赋值前有个声明变量类型的动作,其实这个动作就是针对这个变量类型开辟一个相应大小的内存空间。学过C的都知道不同类型的变量其数据长度不同,如整型变量int的数据长度是4字节,而字符型变量char的数据长度是1字节,这个数据长度就代表着其在内存中所占据空间的大小。C语言通过声明变量类型可有效利用内存空间资源。(sizeof()函数可用于查看变量的数据长度)

   而python在对标签(变量)进行赋值时(python对标签的赋值解释成python对对象的引用会更直观),如果被赋值的对象是第一次被“引用”,则python(准确的说是python的编译器)会为这个对象开辟一个内存空间,内存空间的大小python会根据这个对象的类型和数据内容自动分配(python的sys包中有一个getrefcount()方法可返回对象的引用次数)。下面以python对象引用的一个过程图来完成今天的对python动态特性的介绍:

  执行 a = k 相当于给在对象k的家门口贴小广告a,通过这个小广告a我们就可以找到对象k的家,从而找到对象k,之后想怎么对这个对象k就看你要怎么做了。而执行b = a 则相当于找到小广告a,在它旁边再贴上一个小广告b,或者通过 b = k 直接在k的家门口再贴上一个小广告b,这样,无论是通过小广告a还是小广告b都可以找到对象k。而id(k)(python中的内置函数,用于返回对象在内存空间的地址)相当对象k的房屋登记信息,通过查找房屋登记信息也可以获取对象k的住址。当然,小广告也有被撕掉的可能,但只要还有小广告则都可以根据小广告找到对象k的家,如果小广告被撕光了那就找不到对象k了。

ps:对于python的对象引用机制我只是从表面最容易理解的层次进行介绍,想引用的浅拷贝、深拷贝和垃圾回收机制并没有出现这里,之后会根据使用情况再分别介绍。python灵活的对象引用机制让python完全的“动”起来了,小伙伴再也不用为了声明各种各样的变量类型而苦恼了。

  

原文地址:https://www.cnblogs.com/3fman/p/9164217.html

时间: 2024-10-16 21:49:24

让我们和python一起“动”起来的相关文章

Python superbwallpapers 动漫分类 下载

动漫分类壁纸多线程下载,有Bug # -*- coding: utf-8 -*- import os,urllib2,re,urllib from bs4 import BeautifulSoup import socket socket.setdefaulttimeout(25) #in case of overtime:http://outofmemory.cn/code-snippet/16848/python-through-urllib-urlretrieve-file-setting

Python爬虫之足球小将动漫(图片)下载

??尽管俄罗斯世界杯的热度已经褪去,但这届世界杯还是给全世界人民留下了无数难忘的回忆,不知你的回忆里有没有日本队的身影?本次世界杯中,日本队的表现让人眼前一亮,很难想象,就是这样一只队伍,二十几年还是我们国家足球队的水平一样,也许还不如我们国足呢. ??足球小将(队长小翼.キャプテン翼)由日本著名动漫家高桥阳一于1981年开始连载,从此这部动漫就伴随着一代又一代的日本,甚至全世界的少年儿童成长,也在无形有形中促进了日本足球的进步.本届世界杯中,在日本与比利时的比赛中,日本球迷们高举队长小翼的画面

Python爬虫爬取腾讯视频动漫专区的动漫及其描述

闲来无事爬点动漫资讯看看 下面这个是腾讯视频动漫板块的超链接 [https://v.qq.com/channel/cartoon?listpage=1&channel=cartoon&iarea=1] 上面的红框中第一个是动漫的标题,第二个是动漫的咨询简单描述 如何用Python爬取上述信息 首先要用浏览器的开发者工具查到相应的信息实在那几个html文件中 上面的红框中就是对应的标签,但我们用正则表达式取标签的时候应该尽量取它的上一层标签(因为如果单单取名字标签,很难把对应的描述最后对应起

Python多进程爬虫东方财富盘口异动数据+Python读写Mysql与Pandas读写Mysql效率对比

先上个图看下网页版数据.mysql结构化数据 通过Python读写mysql执行时间为:1477s,而通过Pandas读写mysql执行时间为:47s,方法2速度几乎是方法1的30倍.在于IO读写上,Python多线程显得非常鸡肋,具体分析可参考:https://cuiqingcai.com/3325.html 1.Python读写Mysql # -*- coding: utf-8 -*- import pandas as pd import tushare as ts import pymys

python + selenium + Js 处理轮动条

selenium并不是万能的,有时候页面上操作无法实现的,这时候就需要借助JS来完成了. 常见场景: 当页面上的元素超过一屏后,想操作屏幕下方的元素,是不能直接定位到,会报元素不可见的. 这时候需要借助滚动条来拖动屏幕,使被操作的元素显示在当前的屏幕上. 滚动条是无法直接用定位工具来定位的.selenium里面也没有直接的方法去控制滚动条, 这时候只能借助J了,还好selenium提供了一个操作js的方法: execute_script(),可以直接执行js的脚本. 一.JavaScript简介

python接口自动化3-自动发帖(session)

前言 上一篇模拟登录博客园,但这只是第一步,一般登录后,还会有其它的操作,如发帖,评论等,这时候如何保持会话呢? 一.session简介 1.查看帮助文档,贴了一部分,后面省略了 >>import requests>>help(requests.session()) class Session(SessionRedirectMixin) |  A Requests session. |   |  Provides cookie persistence, connection-poo

python接口自动化3-自动发帖(session)【转载】

本篇转自博客:上海-悠悠 原文地址:http://www.cnblogs.com/yoyoketang/tag/python%E6%8E%A5%E5%8F%A3%E8%87%AA%E5%8A%A8%E5%8C%96/ 前言 上一篇模拟登录博客园,但这只是第一步,一般登录后,还会有其它的操作,如发帖,评论等,这时候如何保持会话呢? (敲黑板!!!由于博客园最近登录机制变了,登录全部走cookie登录) 一.session简介 1.查看帮助文档,贴了一部分,后面省略了 >>import reque

mysql数据表自动导为python sqlalchemy可操作对象

python 从数据库表生成model 找了很久才找到这个,我是新手... 现在已有建好的数据库,需要基于原有数据做数据分析的web应用,我选择python+Tornado ,由于不想写SQL语句,就想偷个懒 1.安装工具 1 [email protected]:~/code/py/django/logcloud$ sudo pip install sqlacodegen 2 Downloading/unpacking sqlacodegen 3 Downloading sqlacodegen-

python的matplotlib的热门可视化动图

1.图 2.代码 import pandas as pd import matplotlib as mpl import matplotlib.pyplot as plt import matplotlib.ticker as ticker import matplotlib.animation as animation #导出数据,当然这个数据也可以是直接在网上下载,是的有点慢 #网址:https://gist.githubusercontent.com/johnburnmurdoch/419