广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python函数的作用域及内置函数详解
  • 221
分享到

Python函数的作用域及内置函数详解

2024-04-02 19:04:59 221人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录1.函数的作用域2.函数的调用详解3.内置函数总结1.函数的作用域 -- 内置 -- 全局,顶格写 -- 局部,函数内部 a = 34 #全局变量 def run():

1.函数的作用域

-- 内置

-- 全局,顶格写

-- 局部,函数内部


a = 34 #全局变量
def run():
    b = 44 #局部变量
print(a)
print(b) #不可以直接调用局部变量,报错

运行结果:


c = 12
def run(a):
    print(a)
    b = 33
run(5)
# 一个全局变量c
# 两个局部变量a,b
# 函数的参数也是局部变量

运行结果:

5

局部 VS 全局

-- 局部空间(函数内)获取全局变量,Yes

-- 全部空间(函数外)获取局部变量,No,但可以间接通过返回值 return 获取

-- 全局空间(函数外)修改局部变量,No

-- 局部空间(函数内)修改全部变量,Yes,但必须要声明,global 全局变量名


siwei = 99
def run():
    print('函数执行')
    print(siwei)# 调用全局变量,可以正常使用
run()

运行结果:

函数执行
99


siwei = 99
def run():
    print('函数执行')
    a = 88
    print(siwei)# 调用全局变量,可以正常使用
    return a #用返回值,返给全局变量result
result = run()
print(result)

运行结果:

函数执行
99
88


siwei = 99
def run():
    print('函数执行')
    a = 88
    print(siwei)# 调用全局变量,可以正常使用
    return a #用返回值,返给全局变量result
result = run()
print(result)

运行结果:

100

2.函数的调用详解

注意:

-- 函数必须先定义再调用

-- 不同函数定义的先后顺序无关

-- 函数体内可以调用函数自己本身,但一般不这样使用,容易出错


# 还没定义函数就直接调用,所以会报错
offer('lili',20,'辣条')
def eat(name,food):
    print('{} 最喜欢吃 {}'.fORMat(name,food))
def offer(name,money,food):
    print('恭喜 {} 拿到 {}k offer'.format(name,money))
    eat(name,food)

运行结果:


# 一个函数当中是可以去调用另外一个函数的
def eat(name,food):
    print('{} 最喜欢吃 {}'.format(name,food))
def offer(name,money,food):
    print('恭喜 {} 拿到 {}k offer'.format(name,money))
    eat(name,food)
offer('lili',20,'辣条')

运行结果:

恭喜 lili 拿到 20k offer
lili 最喜欢吃 辣条


# 两个函数位置互换是不影响结果的
def offer(name,money,food):
    print('恭喜 {} 拿到 {}k offer'.format(name,money))
    eat(name,food)
def eat(name,food):
    print('{} 最喜欢吃 {}'.format(name,food))
offer('lili',20,'辣条')

运行结果:

恭喜 lili 拿到 20k offer
lili 最喜欢吃 辣条

可以通过Debug模式来详细查看一下代码的运行过程

offer 和 eat 函数第一行被执行,函数体里的代码不会被执行

当offer 被调用时,代码自动找offer函数,然后进入函数体内,然后执行eat 函数

代码自动找eat 函数,然后进入函数体


# 函数自己可以调用自己本身,但会报递归错误
def run():
    print('正在运行!')
    run()
run()

运行结果:

RecursionError: maximum recursion depth exceeded while calling a python object

递归错误:调用Python对象时超过的最大递归深度

3.内置函数

enumrate():获取列表的索引值与元素值


list1 = ['a','b',1,2]
for i in enumerate(list1):
    # 输入结果是数据类型是元组
    print(i)
for index,value in enumerate(list1):
    # 输出结果:索引值是int类型,元素值是什么数据类型就是什么类型
    print(index,value)

运行结果:

(0, 'a') ====> tuple
(1, 'b')
(2, 1)
(3, 2)
0 a ====> 0 int a str
1 b
2 1====> 2 int 1 int
3 2

eval():去掉字符串两边的引号


string = '1 + 1'
string1 = '7.8 + 4.5'
string2 = '(1,2,3)'
print(string,type(string))
# 去掉引号,相当于变成了算数运算
print(eval(string),type(eval(string)))
print(eval(string1),type(eval(string1)))
# 去掉引号,相当于变成了元组
print(eval(string2),type(eval(string2)))

运行结果:

1 + 1 <class 'str'>
2 <class 'int'>
12.3 <class 'float'>
(1, 2, 3) <class 'tuple'>

zip():用于将可迭代的对象作为参数,按索引号打包成一组一组


title = ['id','name','url']
row = ['1','lili','Http://www.baidu1.com']
# zip迭代每一个元素,按索引号打包成一组,然后通过dict转换成字典
result = dict(zip(title,row))
print(result)
# 列表,元组都可以转换成字典
title1 = ('id','name','url')
row1 = ['2','lili','http://www.baidu2.com']
result1 =dict(zip(title1,row1))
print(result1)

运行结果:

{'id': '1', 'name': 'lili', 'url': 'http://www.baidu1.com'}
{'id': '2', 'name': 'lili', 'url': 'http://www.baidu2.com'}


a = [1,2,3]
b = ('a','b','c')
c = 'qaz'
result = dict(zip(a,c))
result1 = dict(zip(a,b))
result2 = dict(zip(b,c))
print(result)
print(result1)
print(result2)

运行结果:

{1: 'q', 2: 'a', 3: 'z'}
{1: 'a', 2: 'b', 3: 'c'}
{'a': 'q', 'b': 'a', 'c': 'z'}

sum(iterable[, start]):求和,求和的类型必须是数字

terable – 可迭代对象,如:列表(list)、元组(tuple)、集合(set)、字典(dict)

start – 指定相加的参数,如果没有设置这个值,默认为0

所以 sum(1,2,3) 是错误的,sum(必须是可迭代对象)


list1 = [2,3,4]
tuple1 = (1,1,1)
dict1= {60.5:'chinese',70:'math'}
set1 = {1,2,3}
print(sum(list1,1))#列表中2,3,4 加上start的值1
print(sum(tuple1))#元组中1,1,1加上默认start的值0
print(sum(dict1))#字典中相加的是key的值,key若不是数字会报错
print(sum(set1))#集合里必须是一层,不能嵌套其他层

运行结果:

10
3
130.5
6

max():求最大值

min() :求最小值


list1 = [1,2,3]
print(max(list1))
print(max(3,4,5))
print(min(list1))
print(min(4,5,6))

运行结果:

3
5
1
4

id():查看内存地址


a = 10
b = 10
# 不可变类型(字符串,元组等),内存地址一样
print(id(a))
print(id(b))
# 可变类型(列表,字典),内存地址不一样
c = [1,2,3]
d = [1,2,3]
print(id(c))
print(id(d))

运行结果:

140716744443840
140716744443840
1975790732416
1975791019584

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注编程网的更多内容!

--结束END--

本文标题: Python函数的作用域及内置函数详解

本文链接: https://www.lsjlt.com/news/135550.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python函数的作用域及内置函数详解
    目录1.函数的作用域2.函数的调用详解3.内置函数总结1.函数的作用域 -- 内置 -- 全局,顶格写 -- 局部,函数内部 a = 34 #全局变量 def run(): ...
    99+
    2022-11-12
  • python内置函数之eval函数详解
    目录一、简介二、语法三、举例1、计算str表达式的值2、将str转换成list3、将str转换成dict四、Reference总结一、简介 eval()函数用来执行一个字符表达式的值...
    99+
    2022-11-12
  • Python内置函数OCT详解
    英文文档: oct ( x ) Convert an integer number to an octal string. The result is a valid Python expre...
    99+
    2022-06-04
    详解 函数 Python
  • Python 内置函数complex详解
    英文文档: class complex([real[, imag]]) Return a complex number with the value real + imag*1j or convert a ...
    99+
    2022-06-04
    详解 函数 Python
  • python内置函数zip详解
    目录一、简介二、详解三、代码四、Reference总结一、简介 zip() 函数用于将可迭代的对象作为参数,主要功能是将对象中对应的元素打包成一个个元组,然后返回由这些元组...
    99+
    2022-11-12
  • Python函数参数传递以及变量作用域详解
    这篇文章主要介绍“Python函数参数传递以及变量作用域详解”,在日常操作中,相信很多人在Python函数参数传递以及变量作用域详解问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python函数参数传递以及变...
    99+
    2023-06-04
  • python基础-内置函数-作用域-闭包
    内置函数-作用域-闭包-递归 1.几个可能用到的内置函数 查看内置函数: print(dir(__builtins__)) 常见函数: len 求长度 min 最小值 max 最大值 sorted 排...
    99+
    2023-01-31
    函数 作用 基础
  • 详解操作python容器的内置通用函数
    目录这些数据容易的通用操作都有哪些?我们看看几个容器的代码总结这些数据容易的通用操作都有哪些? 除了数据的增删查改(除了tuple不可变长度和元素不可变),我们还需要下面的操作: ...
    99+
    2022-11-12
  • python内置函数bytes()用法详解
            python内置函数bytes返回一个新的bytes类型的对象,bytes类型对象是不可变序列,包含范围为 0 ...
    99+
    2023-09-05
    python bytes
  • Python函数中的作用域规则详解
    目录1、简单介绍一下闭包2、在Python中,并不是任何代码块都能引入新的作用域3、在Python中,名字绑定在所属作用域中引入新的变量,同时绑定到一个对象。总结Python是静态作...
    99+
    2022-11-13
  • 详解Python函数作用域的LEGB顺序
    本文为大家介绍了Python函数作用域的查找顺序,供大家参考,具体内容如下 1.什么是LEGB? L:local 函数内部作用域 E:enclosing 函数内部与内嵌函数之间 G:global 全局...
    99+
    2022-06-04
    详解 函数 顺序
  • Python内置函数详细解析
    目录1.abs2.all3.any4.callable5.dir6.id7.locals 和 globals8.hash9.sum10.getattr、setattr、delattr...
    99+
    2022-11-11
  • 详解Python map函数及Python map()函数的用法
    python map函数 map()函数 map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list ...
    99+
    2022-06-04
    函数 详解 Python
  • JavaScript函数执行、作用域链以及内存管理详解
    目录前言函数执行全局执行上下文函数执行上下文作用域链内存管理引用计数标记清除前言 在我们平常编写JavaScript代码的时候,难免会用到函数,函数里面会有各种变量,这些变量的作用的...
    99+
    2023-01-08
    JS函数执行 js作用域链 js内存管理
  • Python内置函数详谈
    这种图皆取自python.org,列出了python3.10中的内置函数。 但是,这些真的都是函数吗? 我们来测试一下: import types import inspect...
    99+
    2022-11-12
  • Python 内置函数之随机函数详情
    目录导入模块: import random 1、random.choice(列表/元组/字符串) ,在列表或者元组中随机挑选一个元素,若是字符串则随机挑选一个字符 nu...
    99+
    2022-11-12
  • python3内置函数详解
    内置函数注:查看详细猛击这里abs() 对传入参数取绝对值bool() 对传入参数取布尔值, None, 0, "",[],{},() 这些参数传入bool后,返回Falseall() 所有传入参数为真,才为真any() 任何一个传入参数为...
    99+
    2023-01-31
    详解 函数
  • Python中10个常用的内置函数详解
    目录complex()dir()divmod(a,b)enumerate(iterable,start=0)eval(expression,globals,locals)filter...
    99+
    2022-11-12
  • Python内置函数zip map filter的使用详解
    并行遍历zip zip会取得一个或多个序理为参数,然后返回元组的列表,将这些序列中的并排的元素配成对。 L1=[1,2,3,4] L2=[5,6,7,8] L3=zip(L1,L...
    99+
    2022-11-12
  • Python中非常好用的内置函数详解
    目录Counter举例实战sortedallF-strings总结 Python中冷门但非常好用的内置函数 Counter举例 实战sortedallF-strings Pytho...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作