精华内容
下载资源
问答
  • 本篇内容主要介绍从几个维度来介绍下python中函数和方法的区别:首先,从分类的角度来分析。(1)函数的分类:(推荐学习:Python视频教程)内置函数:python内嵌的一些函数。匿名函数:一行代码实现一个函数功能。递归...

    本篇内容主要介绍从几个维度来介绍下python中函数和方法的区别:

    首先,从分类的角度来分析。

    (1)函数的分类:(推荐学习:Python视频教程)

    内置函数:python内嵌的一些函数。

    匿名函数:一行代码实现一个函数功能。

    递归函数

    自定义函数:根据自己的需求,来进行定义函数。

    (2)方法的分类:

    普通方法:直接用self调用的方法。

    私有方法:__函数名,只能在类中被调用的方法。

    属性方法:@property,将方法伪装成为属性,让代码看起来更合理。

    特殊方法(双下划线方法):以__init__为例,是用来封装实例化对象的属性,只要是实例化对象就一定会执行__init方法,如果对象子类中没有则会寻找父类(超类),如果父类(超类)也没有,则直接继承object(python 3.x)类,执行类中的__init__方法。类方法:通过类名的调用去操作公共模板中的属性和方法。

    静态方法:不用传入类空间、对象的方法, 作用是保证代码的一致性,规范性,可以完全独立类外的一个方法,但是为了代码的一致性统一的放到某个模块(py文件)中。

    其次,从作用域的角度来分析:

    (1)函数作用域:从函数调用开始至函数执行完成,返回给调用者后,在执行过程中开辟的空间会自动释放,也就是说函数执行完成后,函数体内部通过赋值等方式修改变量的值不会保留,会随着返回给调用者后,开辟的空间会自动释放。

    (2)方法作用域:通过实例化的对象进行方法的调用,调用后开辟的空间不会释放,也就是说调用方法中对变量的修改值会一直保留。

    最后,调用的方式不同。

    (1)函数:通过“函数名()”的方式进行调用。

    (2)方法:通过“对象.方法名”的方式进行调用。class Foo(object):

    def func(self):

    pass

    #实例化

    obj = Foo()

    # 执行方式一:调用的func是方法

    obj.func() #func 方法

    # 执行方式二:调用的func是函数

    Foo.func(123) # 函数

    更多Python相关技术文章,请访问Python教程栏目进行学习!

    展开全文
  • Java中枚举和类有啥区别,除了天生单例,其他的用途是什么?
  • 前言 最近看 WeakHashMap 代码时,发现了一个名词叫 弱引用 ,然而我居然没听说过,这可不能忍所以打算研究下这是玩意儿。 其实就是多看几篇博客,然会汇总下而已。。。 四种引用的定义 Java 存在四种引用,分别是...

    前言

    最近看 WeakHashMap 代码时,发现了一个名词叫 弱引用 ,然而我居然没听说过,这可不能忍所以打算研究下这是啥玩意儿。

    其实就是多看几篇博客,然会汇总下而已。。。

    在这里插入图片描述

    四种引用的定义

    Java 存在四种引用,分别是强引用(StrongReference)、软引用(SoftReference)、弱引用(WeakReference)和虚引用(PhantomReference)。

    主要有两个目的:

    1. 可以在代码中决定某些对象的生命周期;
    2. 优化 JVM 的垃圾回收机制。

    它们的引用级别从高到低为:

    强引用 > 软引用 > 弱引用 > 虚引用

    先看看他们四个的定义特点:

    • 强引用

    强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。

    通常我们通过new来创建一个新对象时返回的引用就是一个强引用,若一个对象通过一系列强引用可到达,它就是强可达的(strongly reachable),那么它就不被回收

    当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足的问题。

    局部方法内的强引用会随着方法的结束退栈而自动清除引用,全局变量需要在不使用时置 null

    • 软引用

    如果一个对象只具有软引用,则内存空间足够,垃圾回收器就不会回收它;如果内存空间不足了,就会回收这些对象的内存。

    只要垃圾回收器没有回收它,该对象就可以被程序使用。软引用可用来实现内存敏感的高速缓存。

    • 虚引用

    虚引用是Java中最弱的引用,我们通过虚引用甚至无法获取到被引用的对象,虚引用存在的唯一作用就是当它指向的对象被回收后,虚引用本身会被加入到引用队列中,用作记录它指向的对象已被回收。

    • 弱引用

    弱引用与软引用的区别在于:只具有弱引用的对象拥有更短暂的生命周期。

    在垃圾回收器线程扫描它所管辖的内存区域的过程中,一旦发现了只具有弱引用的对象,不管当前内存空间足够与否,都会回收它的内存。

    不过,由于垃圾回收器是一个优先级很低的线程,因此不一定会很快发现那些只具有弱引用的对象。


    弱引用特别解释

    因为是看到弱引用才想起这个,当然要特别照顾下。

    Java中的弱引用具体指的是java.lang.ref.WeakReference类,它的官方说明写到:

    弱引用对象的存在不会阻止它所指向的对象被垃圾回收器回收。
    弱引用最常见的用途是实现规范映射(canonicalizing mappings,比如哈希表)。
    假设垃圾收集器在某个时间点决定一个对象是弱可达的(weakly reachable)(也就是说当前指向它的全都是弱引用),这时垃圾收集器会清除所有指向该对象的弱引用,然后把这个弱可达对象标记为可终结(finalizable)的,这样它随后就会被回收。
    与此同时或稍后,垃圾收集器会把那些刚清除的弱引用放入创建弱引用对象时所指定的引用队列(Reference Queue)中。

    其实就是说,被 GC 扫描到,然后被回收,算这个对象运气不好。

    WeakHashMap 就是使用弱引用 key,它非常适合作为缓存。


    它们的使用方式

    1. 强引用

    上面已经介绍了, new 对象就相当于强引用,这也是我们最常用的方式:

        public static void main(String[] args) {
              MyDate myDate = new MyDate();//强引用
              System. gc();
         }
    

    无输出,说明虽然我们显示的调用了垃圾回收,但是 myDate 是强引用,所以不会被回收。

    2. 弱引用

    当发生GC时,弱引用对象总会被回收,因此弱引用也可以用于缓存。

    Product productA = new Product(...);
    WeakReference<Product> weakProductA = new WeakReference<>(productA);
    

    现在,若引用对象weakProductA就指向了Product对象productA。那么我们怎么通过weakProduct获取它所指向的Product对象productA呢?很简单,只需要下面这句代码:

    Product product = weakProductA.get();
    WeakReference<Product> weakProductA = new WeakReference<>(productA);
    

    弱不需要该对象时,只需将 product 设置为 null,表明它所引用的Product已经无需存在于内存中。

    这时指向这个Product对象的就是由弱引用对象weakProductA了,那么显然这时候相应的Product对象时弱可达的,所以指向它的弱引用会被清除,这个Product对象随即会被回收,指向它的弱引用对象会进入引用队列中。

    3. 软引用

    软引用是用来描述一些有用但并不是必需的对象,适合用来实现缓存(比如浏览器的‘后退’按钮使用的缓存),JVM 内存空间充足的时候将数据缓存在内存中,如果空间不足了就将其回收掉。

        // 强引用
        String strongReference = new String("123");
        // 软引用,"456"这个String对象包含一个强引用 str 和弱引用 softReference 
        String str = new String("456");
        SoftReference<String> softReference = new SoftReference<String>(str);
    

    软引用可以和一个引用队列(ReferenceQueue)联合使用。如果软引用所引用对象被垃圾回收,JAVA虚拟机就会把这个软引用加入到与之关联的引用队列中。

        ReferenceQueue<String> referenceQueue = new ReferenceQueue<>();
        String str = new String("abc");
        SoftReference<String> softReference = new SoftReference<>(str, referenceQueue);
     
        str = null;//去掉 str 的强引用
        System.gc();// Notify GC
     
        System.out.println(softReference.get()); // abc
     
        Reference<? extends String> reference = referenceQueue.poll();
        System.out.println(reference); //null
    

    最后的虚引用就算了,也用不上。


    参考文章

    https://www.jianshu.com/p/a7aaaf1bd7be

    https://blog.csdn.net/javastudyr/article/details/17205075

    https://blog.csdn.net/lsh159357/article/details/104747194

    https://blog.csdn.net/lsh159357/article/details/104747194

    展开全文
  • 外贸公司必须要站内搜索。方便客户查找各项内容。 紧跟着、简单明了且吸引人的标题 浏览网页的时候,大多数人是处于非常快速浏览网页的状态,而不是慢慢的品读,所以要想吸引目标客户的注意力,必需先吸引他们的...

    首先,外贸网站要简约大方~

    一个好的外贸公司必须是结合欧美网站设计风格,以网络营销理念为核心,将网络营销概念嵌入网站建设中,充分将网站的策划、网站设计、SEO、SEM融汇一体,让您的外贸网站赢得国外客户认可,又赢得国际搜索引擎的认可,迅速脱颖而出,带来大量的客户订单。

    其次、明确做外贸的目的~

    我们接触的大部分外贸公司建外贸网站的目的就是宣传展示自己的产品,然后通过网站来获取订单。但大部分客户虽然明白了建站目的,但却不采取能提高网站互动性的东西。

    再次、简单易懂的导航和快速搜索

    外贸公司的产品和介绍都很多,如果网站能让客户很快的找到自己所需要的产品,那么这样的网站更受客户欢迎。简单明了的导航栏,让客户一眼就知道自己需要点哪里,更容易成交。外贸公司必须要有站内搜索。方便客户查找各项内容。

    紧跟着、简单明了且吸引人的标题

    浏览网页的时候,大多数人是处于非常快速浏览网页的状态,而不是慢慢的品读,所以要想吸引目标客户的注意力,必需先吸引他们的眼球。方法有改变字体的大小,颜色的深浅以及位置的不同。

    尽管如此但是想要做好一个外贸网站并不容易,尤其是在互联网快速发力的当下,效率也是非常重要的一个要素,所以阿里云提供全面的一站搭建网站服务,比如阿里云.速美建站和阿里云.云企建站高效解决你的问题

    高效全面处理建站问题/阿里云.速美建站https://ac.aliyun.com/application/webdesign/sumei?source=5176.11533457&userCode=pw8knryb

    展开全文
  • 二、函数和方法的区别1、定义位置函数:Python的函数是直接写在Python模块中的,即在.py文件中直接定义。方法:只能定义在class类中2、定义方式函数:函数定义的方式 def关键字 然后接函数名 再是括号 括号里面写...

    一、什么是函数方法?

    实例化出来的去调用,叫做方法.

    直接使用类名去调用,叫做函数.

    二、函数和方法的区别

    1、定义位置

    函数:Python的函数是直接写在Python模块中的,即在.py文件中直接定义。

    方法:只能定义在class类中

    2、定义方式

    函数:函数定义的方式 def关键字  然后接函数名 再是括号 括号里面写形参也可以省略不写形参def functionName():

    """这里是函数的注释"""

    print("这一块写函数的内容")

    方法:方法定义的方式, 首先方法是定义在类中的,其他大体和函数定义差不多,这里需要注意的一点就是方法必须带一个默认参数self(静态方法除外)

    class className(super):

    def methodName(self):

    """这里是方法的注释

    self相当于this;

    """

    print("这里是方法的内容")

    3、调用方式

    函数:直接使用函数名(参数1,参数2,....)调用def functionName():

    print("这是一个函数")

    #调用

    functionName()

    方法:方法是通过对象点方法调用的(这里是指对象方法)class className:

    def method(self):

    print("这是一个方法")

    #调用---------------------

    #实例化对象

    c=className()

    c.method()

    注意:静态方法除外,可以不传递第一个self参数class A:

    @staticmethod

    def func():

    print('这是一个静态方法')

    #不用实例化调用

    A.func()

    #实例化后和其他类方法一样方式调用

    a = A()

    a.func()

    -----输出-----

    这是一个静态方法

    这是一个静态方法

    展开全文
  • 我把它细化到基本的部分,发现当代码中一个函数定义后跟一个print语句时,设备无法连接,但是当print语句后跟函数定义时,设备就不能连接了。在此代码成功连接到设备(并断开连接):import DeviceInterfacedevice...
  • Synchronized与ReentrantLock 有啥区别 相似点: 这两种同步方式有很多相似之处,它们都是加锁方式同步,而且都是阻塞式的同步,也就是说当如果一个线程获得了对象锁,进入了同步块,其他访问该同步块的线程都必须...
  • 手机、电脑等设备均内置该协议,一般不需要加装其他软件,出厂就能上网。 互联网的底层是根服务,全球共有1条母根、13条主根(占用首字母A-M),全部为美国所有。互联网根的核心作用是向全球发放IP网址并能寻址、域名...
  • 相爱相杀好基友——数组与链表 作为线性表的两种存储方式 —— 链表和数组,这对相爱相杀的好基友有着各自的优缺点。接下来,我们梳理一下这两种方式。...除最后一个元素以外,集合中的其他元素均且只
  • __func__:一种约定,...__func: 如果类中一个方法与另外一个类中的一个方法同名了,为了避免引起误解就在前面都加两个下划线,这样解析器就会用_classname__foo来代替这个名字,以区别其他类相同的命名。...
  • 如果你是一名20多岁或30多岁的软件开发人员,...近些年来,随着Android和基于Linux的嵌入式系统在智能手机、电视、汽车和其他设备中的应用,Linux随处可见的证据比比皆是。 即便如此,大多数软件开发人员,甚至是那些.
  • 月薪1万和7K的前端开发工程师有啥区别 今天老板连续3个问题: 做前端的技术精进到底是体现在哪一方面? 啥区别? 除开敲代码的快与慢,熟练与不熟练,理解能力高低,还有其他吗? 个人的一些理解: 区别还是...
  • 这里未免会产生疑问:切片底层不就是指针指向底层数组数据吗,为何不直接传递切片,两者什么区别? 例如,在源码log包中,Logger对象上绑定了formatHeader方法,它的入参对象buf,其类型是*[]byte,而非[]byte。 ...
  • ScrumMaster与项目经理究竟有啥区别

    千次阅读 2018-08-17 09:27:48
    说到项目经理和SM的区别,除了叫法不一样,应用的场景不一样,所在团队不一样之外,其他方面差距也是比较大的,具体区别大致上是这样的。 首先,在参与程度上来说,传统的项目管理体系下无论是强、若还是平和矩阵的...
  • 电脑待机与休眠什么区别?电脑待机和休眠哪个更省电?今天小编就来给大家介绍一下电脑待机与休眠这个知识点。待机,将系统切换到该模式后,除了内存,电脑其他设备的供电都将中断。休眠,将系统切换到该模式后,...
  • k8s全称kubernetes,是目前大热的一个可移植容器的编排管理工具,像AWS、Azure、Google、阿里云、腾讯云等主流的公有云提供的都是基于k8s的容器服务,很多其他厂商也在努力跟进中,所以说“kubernetes”是目前容器...
  • @Resource与@Autowired有啥区别? @Resource和@Autowired注解对于一名做Java的朋友只要不是入门基本上大家都是众所周知,在项目中对Bean进行自动装配,当我们使用@Autowired注解进行装配时,为什么其他同事用@...
  • 2008-02-18 回答JAVA和C++都是面向对象语言。也就是说,它们都能够实现面向对象思想(封装,继乘,多态)。...它是在对多种程序设计语言进行了深入细致研究的基础上,据弃了其他语言的不足之处,从根本上解决了c++的...
  • 所谓线性表,就是表中所有元素排排站,除了头尾节点外,其他节点都只有一个前趋,也只有一个后继。线性表的严格定义:表中存在唯一的一个被称作“第一个”的数据元素表中存在唯一的一个被称作“最后一个”的数...
  • 果然,面试官又问了:那两者什么区别呢? 我: ....懵.........懵.........懵.........懵......... 首先呢来看一下定义。 一、代理模式 代理模式:为其他对象提供一种代理以控制对这个对象的访问。代理...
  • Python:是一门编程语言 Python:是一个编辑工具 那么什么是编程语言呢...其他类似语言:C C++ JAVA等 那么什么是编辑工具呢? 方便编写代码的工具,PyCharm,vscode,等等。。 例如你做文档,用world,做演示,用ppt ...
  • 作为一个开源爱好者,我们经常会写一些开源的软件或者工具在网上分享,或者为一些其他的开源软件贡献一些自己的力量,但是对于开源许可(License)是很多种的哦,每一种是不同的约束的,在法治国家是具有法律...
  • .a.b 代表 一个元素上 同时 a 类 和 b 类 .a .b (中间空格) 代表 .b 是 .a 的子元素选择. .a,.b 代表 class='a' 和 class='b' 都会被选择上. 转载于:https://www.cnblogs.com/whm-blog/p/9749727.html...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 468
精华内容 187
关键字:

其他其他有啥区别