精华内容
下载资源
问答
  • 数制转换即进制转换,进制(二、八、十、十六进制)间相互转换,计算机编程较为常见。这里列举了python常见数制转换用法。 1.进位制度 Python中二进制以0b开头: 例如: 0b11 则表示十进制3 8进制以0...
  • 数制转换即进制转换,进制(二、八、十、十六进制)间相互转换,计算机编程较为常见。这里列举了python常见数制转换用法。 1.进位制度 Python中二进制以0b开头: 例如: 0b11 则表示十进制3 8进制以0...

    数制转换即进制转换,指进制(二、八、十、十六进制)间的相互转换,计算机编程中较为常见。这里列举了python常见数制转换用法。

    1.进位制度

    Python中二进制是以0b开头的:

    例如: 0b11 则表示十进制的3

    8进制是以0开头的:

    例如: 011则表示十进制的9

    16进制是以0x开头的:

    例如: 0x11则表示十进制的17

    或者写成 \x \b

    2.各种函数转换

     
    #10进制转为2进制
    
    >>> bin(10)
    
    '0b1010'
    
     
    `
    
     
    #2进制转为10进制
    
    >>> int("1001",2)
    
    
    
     
    #10进制转为16进制
    
    >>> hex(10)
    
    '0xa'
    
    
    
     
    #16进制到10进制
    
    >>> int('ff', 16)
    
    255
    
    
    
     
    >>> int('0xab', 16)
    
    171
    
     
    
     
    #十进制转为八进制
    
    >>print("%o" % 10)
    
    >>12
    
     
    
     
    #16进制到2进制
    
    >>> bin(0xa)
    
    '0b1010'
    
    >>>
    
     
    
    
     
    #10进制到8进制
    
    >>> oct(8)
    
    '010'
    
     
    
    
     
    #2进制到16进制
    
    >>> hex(0b1001)
    
    '0x9'
    
    
    
    展开全文
  • 如果在函数内的顶部有 " global str1 "这样的代码,它就告诉 Python ,“在这个函数中,str1 指的是全局变量,所以不要用这个名字创建一个局部变量”。例如下面代码: def test1(): global str1 str1 = 'one' str1...

    Python中全局变量、局部变量以及global、nonlocal关键字的用法

    1.全局变量和局部变量

    前言:

    • 全局变量是在整个py文件中声明,全局范围内都可以访问;
    • 局部变量是在某个函数中声明的,只能在该函数中调用它,如果试图在超出范围的地方调用,程序就爆掉了
    • 如果在函数内部定义与某个全局变量一样名称的局部变量,就可能会导致意外的效果,可能不是你期望的。因此不建议这样使用,这样会使得程序很不健全。

    有 4 条法则,来区分一个变量是处于局部作用域还是全局作用域:

    1. 如果变量在全局作用域中使用(即在所用函数之外),它就总是全局变量。
    2. 如果在一个函数中,有针对该变量的 global 语句,它就是全局变量。
    3. 否则,如果该变量用于函数中的赋值语句,它就是局部变量。
    4. 但是,如果该变量没用用在赋值语句中,它就是全局变量。

    阅读 例1,可以更好地理解这些法则,

    # 例 1
    def test1():
        global str1
        str1 = 'hello' # 这是全局变量
    def test2():
        str1 = 'python' # 这是局部变量
    def test3():
        print(str1) # 这是全局变量
    str1 = 42   # 这是全局变量
    test1()
    print(str1) # out: hello
    

    解释:在 test1() 函数中,str1 是全局 str1 变量,因为在函数的开始处,有针对 str1 变量的 global 语句。在 test2() 函数中,str1 是局部变量,因为在该函数中有针对它的赋值语句。在 test3() 函数中,str1 是全局变量,因为在这个函数中,既没有赋值语句,也没有针对它的 global 语句。

    • 在一个函数中,一个变量要么总是局部变量,要么总是全局变量。函数中的代码没有办法先使用名为 str1 的局部变量,稍后又在同一个函数中使用全局变量。
    • 如果想在一个函数中修改全局变量中存储的值,就必须对该变量使用 global 语句。
    • 在一个函数中,如果试图在局部变量赋值之前就使用它,Python就会报错。如例2
    #例 2
    def test1():
    	print(str1) # ERROR
    	str1 = 'hello world' # 局部变量
    str1 = 'hi' # 全局变量
    test1()
    '''
    报错:
    File "E:/test/test.py", line 92, in test1
        print(str1) # ERROR
    UnboundLocalError: local variable 'str1' referenced before assignment
    '''
    

    例2解释:之所以报错,因为 Python 看到 test1() 函数中有针对 str1 的赋值语句,所以会认为 str1 变量是局部变量。但是 print(str1) 语句的执行在 str1 赋值之前,局部变量 str1 并不存在(即赋值之前应用本地变量 str1)。Python不会退回使用全局 str1 变量。

    2. global语句

    使用 global 语句可以在一个函数内修改全局变量。如果在函数内的顶部有 " global str1 "这样的代码,它就告诉 Python ,“在这个函数中,str1 指的是全局变量,所以不要用这个名字创建一个局部变量”。例如下面代码:

    def test1():
    	global str1
    	str1 = 'one'
    str1 = 'global'
    test1()
    print(str1) # out: one
    

    因为 str1 在 test1() 的顶部被声明 gloabl,所以当 str1 被赋值为 ‘one’ 时,赋值发生在全局作用域的 str1 上。没有创建局部 str1 变量。

    3. nonlocal语句

    Python 3.0 引入了一条新的nonlocal语句,实际上,当执行到 nonlocal 语句的时候,nonlocal中列出的名称必须在一个嵌套的def中提前定义过,否则,将会产生一个错误。nonlocal名称只能出现在嵌套的def中,而不能在模块的全局作用域中或def之外的内置作用域中。
    表示在局部作用域中,调用父级作用域中的变量;如果嵌套了很多层,最多只能作用到最顶层的函数,不能作用于全局变量。
    在这里插入图片描述
    在这里插入图片描述
    动手算算这些题,理论要和实际相结合

    a = 1
    def func_1():
        a =2
        def func_2():
            # a = 3  #模块A
            def func_3():
                nonlocal a
                a = 4
                print(' 8行:',a)
            print(' 9行:',a)
            func_3()
            print('11行:',a)#2 --> 4
        print('12行:',a)
        func_2()
        print('14行:',a)#2-->4
    print('15行:',a)
    func_1()
    print('17行:',a)#全局变量,nonlocal无权更改
    

    上面代码中,加上模块A的结果:
    在这里插入图片描述
    不加模块A的结果:
    在这里插入图片描述

    展开全文
  • 1、耦合是指两个或两个以上体系或两种运动形式间通过相互作用而彼此影响以至联合起来现象。 2、在软件工程,对象之间耦合度就是对象之间依赖性。对象之间耦合越高,维护成本越高,因此对象设计应使类...

    切片

    切片是python提供给开发者用来分割、切割字符串或者其他有序可迭代对象的一种手段
    字符串[index] # 访问字符串的某个字符
    字符串[start:] # 从start小标位置开始切割字符串,到末尾
    字符串[start: end] # 从start小标位置开始切割字符串,切去end位置,不包含end 前闭后开区间[)
    字符串[start: end: step] # step表示步长,默认是1,注意:如果step为负数,表示从右向左切取

    函数

    什么是函数

    函数是具有特殊功能的一段代码的封装
    函数是具有名称的一段具体功能代码的统称

    为什么学习函数

    提高代码封装、提高代码的复用性、解耦合的作用

    python中如何定义函数

    使用关键字 def # define function

    	def 函数名称([参数列表]):
    		# 函数体
    
    		# [return 返回值]
    
    	
    	# 调用函数的帮助文档
    	# print(print_msg.__doc__)
    	# print(help(print_msg))
    

    函数分类

    |-- 定义有没有参数
    	|-- 无参函数
    	|-- 有参函数
    		函数的参数,要根据实际来决定,是否需要参数
    |-- 是否有返回值
    	|-- 无返回值
    	|-- 有返回值
    	在函数中,当遇到return关键字的时候,函数会立刻返回
    

    全局变量和局部变量

    全局变量:定义在模块(.py)中,可以在该模块定义后任何地方都可以访问
    局部变量:定义在函数内部的变量,作用域只是在当前函数内有效,出了函数,无法访问到

    在函数中,能不能访问到全局变量?
    当然可以,但是注意:在python中,函数内不允许修改全局变量
    如果确实在函数内,需要修改全局变量,必须要提前申明
    global 全局变量

    函数的调用

    压栈,函数调用本质就是将堆中的函数调用到栈中执行,这个过程被称为压栈,等函数执行完成,
    会立刻执行出栈(弹栈)

    引用传递和值传递

    值传递:本质就是传递数据值的拷贝,跟原先的那个值没有关系
    引用传递:本质是传递指针(地址),所以说实质操作的就是堆

    函数的参数问题

    默认值参数
    # 默认值参数,在参数上,给定一个最常用的值,在调用的时候,
    # 如果和默认的值一致,就可也不用传递这个参数
    def get_cricle_area(r, pi=3.14):
    pass
    注意:默认值参数,必须放在普通后面!!!

    可变参数
    def show(name, age=16, *args):
    pass
    args以元组的形式保存

    命名参数(关键字参数)
    def show2(name, age, **kwargs):
    pass
    kwargs是以字典的形式保存

    函数递归

    函数自身调用自身
    注意:必须要有终止条件,没有终止条件的递归是一个死循环
    递归次数上限为1000次,可更改
    StackOverflowException
    

    #作业8:使用递归完成1~100之间的积

    def digui(i=100):
    	if i == 1:
    		return 1
    	return i*digui(i-1)
    print(digui())
    

    其他

    if __name__ ==  __'main'__:
    	pass
    

    这段代码在不涉及多个文件调用时带不带都可以,代码依然从上至下执行,但在这段内的代码不会在被其他文件的程序调用时执行,所以里面一般放测试用函数。

    展开全文
  • 查看Python对象属性

    2019-11-24 21:51:38
    下面介绍一下,如何查看Python对象包含哪些属性,如成员函数、变量等,其中这里的Python对象指的是类、模块、实例等包含元素比较多的对象。这里以OpenCV2的Python包cv2为例,进行说明。  由于OpenCV是采用C/C++...

    在Python语言中,有些库在使用时,在网络上找到的文档不全,这就需要查看相应的Python对象是否包含需要的函数或常量。下面介绍一下,如何查看Python对象中包含哪些属性,如成员函数、变量等,其中这里的Python对象指的是类、模块、实例等包含元素比较多的对象。这里以OpenCV2的Python包cv2为例,进行说明。
      由于OpenCV是采用C/C++语言实现,并没有把所有函数和变量打包,供Python用户调用,而且有时网络上也找不到相应文档;还有OpenCV还存在两个版本:OpenCV2和OpenCV3,这两个版本在所使用的函数和变量上,也有一些差别。

    1. dir() 函数

     dir([object]) 会返回object所有有效的属性列表。示例如下:

    $ python

    Python 2.7.8 (default, Sep 24 2015, 18:26:19)

    [GCC 4.9.2 20150212 (Red Hat 4.9.2-6)] on linux2

    Type "help", "copyright", "credits" or "license" for more information.

    >>> import cv2

    >>> mser = cv2.MSER()

    >>> dir(mser)

    ['__class__', '__delattr__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__new__', '__reduce__', '__reduce_ex__','__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'detect', 'empty', 'getAlgorithm', 'getBool', 'getDouble', 'getInt','getMat', 'getMatVector', 'getParams', 'getString', 'paramHelp', 'paramType', 'setAlgorithm', 'setBool', 'setDouble', 'setInt', 'setMat','setMatVector', 'setString']

    2. vars() 函数

    vars([object]) 返回object对象的__dict__属性,其中object对象可以是模块,类,实例,或任何其他有__dict__属性的对象。所以,其与直接访问__dict__属性等价。示例如下(这里是反例,mser对象中没有__dict__属性):

    >>> vars(mser)

    Traceback (most recent call last):

    File "<stdin>", line 1, in <module>

    TypeError: vars() argument must have __dict__ attribute

    >>> mser.__dict__

    Traceback (most recent call last):

    File "<stdin>", line 1, in <module>

    AttributeError: 'cv2.MSER' object has no attribute '__dict__'

    3. help() 函数

    help([object])调用内置帮助系统。输入

    >>> help(mser)

    显示内容,如下所示:

    Help on MSER object:

     

    class MSER(FeatureDetector)

    | Method resolution order:

    | MSER

    | FeatureDetector

    | Algorithm

    | __builtin__.object

    |

    | Methods defined here:

    |

    | __repr__(...)

    | x.__repr__() <==> repr(x)

    |

    | detect(...)

    | detect(image[, mask]) -> msers

    |

    | ----------------------------------------------------------------------

    | Data and other attributes defined here:

    |

    | __new__ = <built-in method __new__ of type object>

    | T.__new__(S, ...) -> a new object with type S, a subtype of T

     按h键,显示帮助信息; 按 q 键,退出。

    4. type() 函数

    type(object)返回对象object的类型。

    >>> type(mser)

    <type 'cv2.MSER'>

    >>> type(mser.detect)

    <type 'builtin_function_or_method'>

    5. hasattr() 函数

    hasattr(objectname)用来判断name(字符串类型)是否是object对象的属性,若是返回True,否则,返回False

    >>> hasattr(mser, 'detect')

    True

    >>> hasattr(mser, 'compute')

    False

    6. callable() 函数

    callable(object):若object对象是可调用的,则返回True,否则返回False。注意,即使返回True也可能调用失败,但返回False调用一定失败。

    >>> callable(mser.detect)

    True

     参考资料

    1. https://stackoverflow.com/questions/2675028/list-attributes-of-an-object

    2. https://docs.python.org/2/library/functions.html

    展开全文
  • 前面章节,详细介绍了模块和包创建和使用(严格来说,包本质上也模块),有些读者可能有这样疑问,即正确导入模块或者包之后,怎么知道该模块具体包含哪些成员(变量、函数或者类)呢? 查看已导入模块...
  • 查看python对象属性

    2018-07-10 14:07:00
    下面介绍一下,如何查看Python对象包含哪些属性,如成员函数、变量等,其中这里的Python对象指的是类、模块、实例等包含元素比较多的对象。这里以OpenCV2的Python包cv2为例,进行说明。 由于OpenCV是采用C/C++...
  • 下面介绍一下,如何查看Python对象包含哪些属性,如成员函数、变量等,其中这里的Python对象指的是类、模块、实例等包含元素比较多的对象。这里以OpenCV2的Python包cv2为例,进行说明。 由于OpenCV是采用C/C++...
  • 下面介绍一下,如何查看Python对象包含哪些属性,如成员函数、变量等,其中这里的Python对象指的是类、模块、实例等包含元素比较多的对象。这里以OpenCV2的Python包cv2为例,进行说明。由于OpenCV是采用C/C++语言...
  • Python变量作用域

    2020-05-19 15:54:40
    变量作用域是指变量作用范围,即定义一个变量后,在哪些地方可以使用这个变量。按照作用域不同,Python 中的变量可以分为局部变量和全局变量。 二、局部变量 在一个函数中定义变量就是局部变量(包括形参)...
  • python面试题汇总02

    2019-03-12 15:07:23
    python中往往出现函数函数的情况,里面的函数引用可引用外部变量,则这个函数就构成闭包。 2.python中可变变量有哪些,不可变变量有哪些? 可变变量有:list,set,dict 不可变变量有:int,float,...
  • 目录zip()简介*zip()简介zip(*)简介LeetCode中哪些情况在用Python3解题时可用zip zip()简介 zip(*iterables)函数可以把 若干个 可迭代对象 作为参数,打包成一个一个元组,然后返回由这些元组组成对象。 若干...
  • python 12.16月考。。

    2020-12-16 11:34:32
    Python中哪些常用内置模块? 把很多函数分组,分别放到不同文件里,一个.py文件就称之为一个模块。 datetime collections struct XML 3 Python中的局部变量和全局变量什么? 局部变量:在函数内部定义并...
  • 1、关于变量,编程语言最基本的概念,和字面意思一样,指的就是他们的值可变,和我们以前学习的方程类似,变量可以代入任何值。 2、变量一般使用: 英文字母、下划线 和 数字组成 3、关键字不能做变量名,要知道...
  • 学习Python的深度学习,我们需要注意以下几方面:(推荐初学者) 1.首先了解正向传播和反向传播; 2.激活函数有几个?...6.一些基础的概念,比如图像分割、物体检测和识别的指的是什么? 7.python函数
  • Python学习之路(二)

    2019-11-04 15:25:16
    Python 基础 口基础语法是否熟悉?介绍一下。 口有哪些关键字?解释其作用。 口有哪些内置方法?解释其作用。...口解释一下什么动态语育7 动态强类型是指什么?...口Python 几种容器类型差别及...
  • 对软件中的最小可测试单元进行检查和验证 单元:函数或者类 单元测试:测试类或者函数 为什么要做单元测试? 便于后期重构 优化设计 文档记录 具有回归性 投入小,收益大,能够精准更早发现问题 单元测试和...
  • 第19章 趣味编程 ...原型指的是尝试性实现,即一个模型。它实现了程序的主要功能。 对程序的结构(如需要哪些类和函数)有一定想法后,先实现一个功能简单的版本,有了可运行的程序后,可再添加新功能。 ...
  • 动态强类型指的是什么? 是否有编码规范的概念?采用的是哪种编码规范? 解释一下深拷贝和浅拷贝 lambda的用法以及使用场景 解释一下闭包及其作用 实现一个简单的装饰器,用来对某个函数的结果进行缓存 Python...

空空如也

空空如也

1 2
收藏数 40
精华内容 16
关键字:

python中函数指的是哪些

python 订阅