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的内部函数的变量修改会影响到离当前函数最近一层的局部变量

#对全局无效

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

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

   

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

时间: 2024-08-25 22:27:44

python基础10的相关文章

python 基础 10.0 nosql 简介--redis 连接池及管道

一. NOSQL 数据库简介 NoSQL 泛指非关系型的数据库.非关系型数据库与关系型数据库的差别 非关系型数据库的优势: 1.性能NOSQL 是基于键值对的,可以想象成表中的主键和值的对应关系,而且不需要经过SQL 层的解析,所以性能非常高. 2.可扩展性同样也是因为基于键值对,数据之间没有耦合性,所以非常容易水平扩展. 关系型数据库的优势: 1. 复杂查询可以用SQL语句方便的在一个表以及多个表之间做非常复杂的数据查询. 2.事务支持使得对于安全性能很高的数据访问要求得以实现.对于这两类数据

python基础10(函数二)

一.函数形参和实参的区别 形参全称是形式参数,在用def关键字定义函数时函数名后面括号里的变量称作为形式参数. 实参全称为实际参数,在调用函数时提供的值或者变量称作为实际参数. >>> def add(a,b): #这里的a和b是形参 return a+b >>> add(1,2) # 这里的1和2是实参 3 >>> x=2 # 这里的x和y是实参 >>> y=3 >>> add(x,y) 5 二.参数的传递和改变

python基础10 字符串操作,字典操作,集合操作

本节内容: 字符串操作 字典操作 集合操作 字符串操作 概述 字符串是以''或""括起来的任意文本,比如'abc',"xyz"等等.请注意,''或""本身只是一种表示方式,不是字符串的一部分,因此,字符串'abc'只有a,b,c这3个字符. 如果字符串本身包含'怎么办?比如我们要表示字符串 I'm OK ,这时,可以用" "括起来表示: "I'm OK" 类似的,如果字符串包含",我们就可以用'

Python基础10—I/O编程

一.输入输出 ①输入:input() ②输出:print() 1 name=input('请输入名字') 2 print(name) 二.文件操作 ①打开文件:文件对象=open(文件名,访问模式,buffering) 文件名:指定要打开的文件,通常需要包含路径,可以是绝对路径也可以是相对路径 buffering:可选参数,指定文件所采用的缓冲方式,buffering=0,不缓冲:buffering=1,缓冲一行:buffering>1,使用给定值作为缓冲区大小 访问模式:用于指定打开文件的模式

Python基础10 反过头来看看

从最初的"Hello World",走到面向对象.该回过头来看看,教程中是否遗漏了什么. 我们之前提到一句话,"Everything is Object". 那么我们就深入体验一下这句话. 需要先要介绍两个内置函数,dir()和help() dir()用来查询一个类或者对象所有属性.你可以尝试一下 >>>print dir(list) help()用来查询的说明文档.你可以尝试一下 >>>print help(list) (lis

【Python基础 10】变量进阶(理解)

目标 变量的引用 可变和不可变类型 局部变量和全局变量 01. 变量的引用 变量 和 数据 都是保存在 内存 中的 在 Python 中 函数 的 参数传递 以及 返回值 都是靠 引用 传递的 1.1 引用的概念 在 Python 中 变量 和 数据 是分开存储的 数据 保存在内存中的一个位置 变量 中保存着数据在内存中的地址 变量 中 记录数据的地址,就叫做 引用 使用 id() 函数可以查看变量中保存数据所在的 内存地址 注意:如果变量已经被定义,当给一个变量赋值的时候,本质上是 修改了数据

2015/9/9 Python基础(10):文件和输入输出

文件对象文件对象不仅可以用来访问普通的磁盘文件,而且也可以访问其它任何类型抽象层面上的“文件”.一旦设置了合适的“钩子”,你就可以访问文件类型接口的其它对象,就好像访问的是普通文件一样.文件对象的处理要以来很多内建函数,还有很多函数会返回文件对象或者是类文件对象.进行这种轴向处理的主要原因是许多输入/输出数据结构更趋向于使用通用的接口.这样就可以在程序行为和实现上保持一致性.文件只是连续的字节序列,数据传输经常会用到字节流,无论字节流是由单个字节还是大块数据组成. 文件内建函数[open()和f

python基础10(函数一)

一.函数的定义 在某些编程语言当中,函数声明和函数定义是区分开的(在这些编程语言当中函数声明和函数定义可以出现在不同的文件中,比如C语言),但是在Python中,函数声明和函数定义是视为一体的.在Python中,函数定义的基本形式如下: def function(params): block return expression/value 注意: (1)在Python中采用def关键字进行函数的定义,不用指定返回值的类型. (2)函数参数params可以是零个.一个或者多个,同样的,函数参数也不

python基础教程_学习笔记10:异常

异常 什么是异常 Python用异常对象来表示异常情况.遇到错误后,会引发异常.如果异常对象并未被处理或捕捉,程序就会用所谓的回溯(Traceback,一种错误信息)终止执行: >>> 1/0 Traceback (most recent call last): File "<pyshell#0>", line 1, in <module> 1/0 ZeroDivisionError: integer division or modulo by