python基础10

Posted 微光半夏

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python基础10相关的知识,希望对你有一定的参考价值。

python基础10

昨日回顾:

def 函数名():

  函数体

  return 返回值

所有的函数  只定义不调用就一定不执行

      先定义后调用

函数名()  #不接收返回值

返回值 = 函数名()  #接收返回值

#返回值

  #没有返回值:默认返回None

    #不写return :函数内的代码执行完毕自动结束

    #只写return :结束一个函数

    #return None

  #返回一个值:结束了函数且返回一个值,可以是任意的值

  #返回多个值:多个值之间用逗号隔开,接收的时候可以用一个变量接受(元祖),也可以用等量的多个变量接收

#参数

  #形参   定义函数的时候

    #位置参数:必须传

    #*args:动态参数   可以接收任意多个按位置传入的参数

    #关键参数:可以不传

    #**kwargs:动态参数   可以接受任意多个按关键字传入的参数

  #实参  调用函数的时候

  #按照位置传参数

  #按照关键字传参数

    #可以混用  位置参数必须在关键字传参之前

    #不能对一个参数重复赋值

def w娃哈哈(*args):
    print(args)
#娃哈哈(1,2,3,4)
l = [1,2,3,4]
娃哈哈(*l)

 


  

默认参数:

如果默认参数的住是一个可变数据类型

那么每一次调用函数的时候

如果不传值就公用这个数据类型的资源

def qqxing(l = []):
    l.append(1)
    print(l)
qqxing()
qqxing()
qqxing()
qqxing()

 

def qqxing(l = []):
    l.append(1)
    print(l)
qqxing()
qqxing([])
qqxing()
qqxing()
def qqxing(k,l ={})
    l[k] = \'v\'
    print(l)
qqxing(1)
qqxing(2)
qqxing(3)

 


  

#函数进阶

a = 1
def func():
    print(a)
func()

 

def func():
    a = 1 
func()
print(a)

  

#命名空间

  #就是python解释器一启动就可以使用的名字存储在内置命名空间中

  #内置的名字在启动解释器的时候被加载进内存里

#命名空间  有三种

#内置命名空间--------python解释器

  #就是python解释器一启动就可以使用的名字存储在内置命名空间中

  #内置的名字在启动解释器的时候被加载进内存里

#全局命名空间---------我们写的代码但不是函数中的代码

  #是在程序从上到下被执行的过程中依次加载进内存的

  #放置了我们设置的所有变量名和函数名

#局部命名空间--------函数

  #就是函数内部定义的名字

  #当调用函数的时候,才会产生这个名称空间随着函数执行的结束 这个命名空间就又消失了

#在局部:可以使用全局  内置命名空间中的名字

#在全局:可以使用内置命名空间中的名字,但是不能用局部中使用

def func():
    a = 1
func()
print(a)

 

def max():
    print(\'in max func\')
max()

 

max([])

 

print(max([1,2,3]))
def max(l)
    print(\'in max func\')
print(max([1,2,3]))

 


  

#在正常情况下,直接使用内置的名字

#当我们在全局定义了和内置名字空间中间名的名字时,会使用全局的名字

#当我自己有时候 我就不找我的上级要了

#如果自己没有 就找上一级要 上一级没有再找上一级  如果内置的名字空间都没有  就报错

def input():
    print(\'in input now\')
def func():
    input()
func()

def input():
    print(\'in input now\')
def func():
    input()
func()
print(id(func))
def func():
    print(input)
print(func)

  

#对于不可变数据类型 在局部可是查看全局作用域中的变量

#但是不能直接修改

#如果想要修改,需要在程序的一开始添加global声明

#如果在一个局部(函数)内声明了一个global变量,那么这个变量在局部的所有操作将所有操作将对全局的变量有效

#作用域两种:

#全局作用域--------作用在全局-------内置和全局名字空间中的名字都属于全局作用域---global()

#局部作用域--------作用在局部-------函数(局部名字空间中的名字属于局部作用域)----locals()

a = 1
def func():
    global a
    a +=1
func()
print(a)
a = 1
b = 2
def func():
    x = \'aaa\'
    y = \'bbb\'
    print(locals())#本地的
print(globals())
print(locals())#本地的

func()
def max(a,b):
    return a if a > b else b
def  the_max(x,y,z):#函数的嵌套调用
    c = max(x,y)
    return max(c,z)
print(the_max(1,2,3))

 


def outer():
    def inner():
        print(\'inner\')
    inner
outer()

 

def outer():
    a = 1
    def inner():
        print(\'inner\')
    inner()
outer()
def outer():
    a = 1
    def inner():
        print(a)
        print(\'inner\')
    inner()
outer()

def outer():
    a = 1
    def inner():
        b = 2
        print(a)
        print(\'inner\')
        def inner2():
            a +=1#不可变数据类型的修改
            print(\'inner2\')
        inner2()
    inner()
outer()

 


def outer():
    a = 1
    def inner():
    inner()
    print(a)
outer()
a = 1
def outer()
    a = 1
    def inner():
        b = 2
        print(a)
        print(\'inner\')
        def inner2():
            global a#声明了一个全局变量
            a +=1#不可变数据类型的修改
            print(\'inner2\')
        inner2()
    inner()
print(\'**a**:\',a)
outer()

 

  

#函数的嵌套定义

#内部函数可以使用外部函数的变量

a = 1
def outer():
    a = 1 
    def inner():
        b = 2
        print(a)
        print(\'inner\')
        def inner2():
            nonlocal a #声明了一个上面第一层局部变量
            a += 1  #不可变数据类型的修改
            print(\'inner2\')
        inner2()
    inner()
    print(\'**a**:\',a)
outer()
print(\'全局:\',a)
a = 1
def outer():
    a = 1
    def inner()

  

#nonlocal 只能用于局部变量  找上层中离当前函数最近一层的局部变量

#声明了nonlocal的内部函数的变量修改会影响到离当前函数最近一层的局部变量

#对全局无效

#对局部  也只是对最近的一层  有影响

#闭包:嵌套函数,内部函数调用外部函数的变量

 

   

 

以上是关于python基础10的主要内容,如果未能解决你的问题,请参考以下文章

scrapy主动退出爬虫的代码片段(python3)

scrapy按顺序启动多个爬虫代码片段(python3)

python之基础篇——模块与包

[vscode]--HTML代码片段(基础版,reactvuejquery)

常用python日期日志获取内容循环的代码片段

十个html5代码片段,超实用,一定要收藏