码迷,mamicode.com
首页 > 编程语言 > 详细

python基础10

时间:2019-03-09 11:39:59      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:div   highlight   def   名字空间   src   定义   max   pen   lse   

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

标签:div   highlight   def   名字空间   src   定义   max   pen   lse   

原文地址:https://www.cnblogs.com/xuweng/p/10500023.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!