爆款云主机2核4G限时秒杀,88元/年起!
查看详情

活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
热门活动
  • 618智算钜惠季 爆款云主机2核4G限时秒杀,88元/年起!
  • 免费体验DeepSeek,上天翼云息壤 NEW 新老用户均可免费体验2500万Tokens,限时两周
  • 云上钜惠 HOT 爆款云主机全场特惠,更有万元锦鲤券等你来领!
  • 算力套餐 HOT 让算力触手可及
  • 天翼云脑AOne NEW 连接、保护、办公,All-in-One!
  • 中小企业应用上云专场 产品组合下单即享折上9折起,助力企业快速上云
  • 息壤高校钜惠活动 NEW 天翼云息壤杯高校AI大赛,数款产品享受线上订购超值特惠
  • 天翼云电脑专场 HOT 移动办公新选择,爆款4核8G畅享1年3.5折起,快来抢购!
  • 天翼云奖励推广计划 加入成为云推官,推荐新用户注册下单得现金奖励
免费活动
  • 免费试用中心 HOT 多款云产品免费试用,快来开启云上之旅
  • 天翼云用户体验官 NEW 您的洞察,重塑科技边界

智算服务

打造统一的产品能力,实现算网调度、训练推理、技术架构、资源管理一体化智算服务
智算云(DeepSeek专区)
科研助手
  • 算力商城
  • 应用商城
  • 开发机
  • 并行计算
算力互联调度平台
  • 应用市场
  • 算力市场
  • 算力调度推荐
一站式智算服务平台
  • 模型广场
  • 体验中心
  • 服务接入
智算一体机
  • 智算一体机
大模型
  • DeepSeek-R1-昇腾版(671B)
  • DeepSeek-R1-英伟达版(671B)
  • DeepSeek-V3-昇腾版(671B)
  • DeepSeek-R1-Distill-Llama-70B
  • DeepSeek-R1-Distill-Qwen-32B
  • Qwen2-72B-Instruct
  • StableDiffusion-V2.1
  • TeleChat-12B

应用商城

天翼云精选行业优秀合作伙伴及千余款商品,提供一站式云上应用服务
进入甄选商城进入云市场创新解决方案
办公协同
  • WPS云文档
  • 安全邮箱
  • EMM手机管家
  • 智能商业平台
财务管理
  • 工资条
  • 税务风控云
企业应用
  • 翼信息化运维服务
  • 翼视频云归档解决方案
工业能源
  • 智慧工厂_生产流程管理解决方案
  • 智慧工地
建站工具
  • SSL证书
  • 新域名服务
网络工具
  • 翼云加速
灾备迁移
  • 云管家2.0
  • 翼备份
资源管理
  • 全栈混合云敏捷版(软件)
  • 全栈混合云敏捷版(一体机)
行业应用
  • 翼电子教室
  • 翼智慧显示一体化解决方案

合作伙伴

天翼云携手合作伙伴,共创云上生态,合作共赢
天翼云生态合作中心
  • 天翼云生态合作中心
天翼云渠道合作伙伴
  • 天翼云代理渠道合作伙伴
天翼云服务合作伙伴
  • 天翼云集成商交付能力认证
天翼云应用合作伙伴
  • 天翼云云市场合作伙伴
  • 天翼云甄选商城合作伙伴
天翼云技术合作伙伴
  • 天翼云OpenAPI中心
  • 天翼云EasyCoding平台
天翼云培训认证
  • 天翼云学堂
  • 天翼云市场商学院
天翼云合作计划
  • 云汇计划
天翼云东升计划
  • 适配中心
  • 东升计划
  • 适配互认证

开发者

开发者相关功能入口汇聚
技术社区
  • 专栏文章
  • 互动问答
  • 技术视频
资源与工具
  • OpenAPI中心
开放能力
  • EasyCoding敏捷开发平台
培训与认证
  • 天翼云学堂
  • 天翼云认证
魔乐社区
  • 魔乐社区

支持与服务

为您提供全方位支持与服务,全流程技术保障,助您轻松上云,安全无忧
文档与工具
  • 文档中心
  • 新手上云
  • 自助服务
  • OpenAPI中心
定价
  • 价格计算器
  • 定价策略
基础服务
  • 售前咨询
  • 在线支持
  • 在线支持
  • 工单服务
  • 建议与反馈
  • 用户体验官
  • 服务保障
  • 客户公告
  • 会员中心
增值服务
  • 红心服务
  • 首保服务
  • 客户支持计划
  • 专家技术服务
  • 备案管家

了解天翼云

天翼云秉承央企使命,致力于成为数字经济主力军,投身科技强国伟大事业,为用户提供安全、普惠云服务
品牌介绍
  • 关于天翼云
  • 智算云
  • 天翼云4.0
  • 新闻资讯
  • 天翼云APP
基础设施
  • 全球基础设施
  • 信任中心
最佳实践
  • 精选案例
  • 超级探访
  • 云杂志
  • 分析师和白皮书
  • 天翼云·创新直播间
市场活动
  • 2025智能云生态大会
  • 2024智算云生态大会
  • 2023云生态大会
  • 2022云生态大会
  • 天翼云中国行
天翼云
  • 活动
  • 智算服务
  • 产品
  • 解决方案
  • 应用商城
  • 合作伙伴
  • 开发者
  • 支持与服务
  • 了解天翼云
      • 文档
      • 控制中心
      • 备案
      • 管理中心

      Python 变量作用域与函数

      首页 知识中心 软件开发 文章详情页

      Python 变量作用域与函数

      2023-06-20 08:16:05 阅读次数:450

      Python,作用域,函数

      Python 变量作用域

      一个程序的所有的变量并不是在哪个位置都可以访问的,访问权限决定于这个变量是在哪里赋值的,变量的作用域决定了在哪一部分程序你可以访问哪个特定的变量名称,两种最基本的变量作用域,第一种是局部变量,第二种是全局变量.定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域,而局部变量只能在其被声明的函数内部访问,全局变量则可以在整个程序范围内访问.

      变量的作用域如下:

      ● L(Local):局部作用域
      ● E(Enclosing):闭包函数外的函数中
      ● G(Global):全局作用域
      ● B(Built-in):内建作用域

      变量的属性与执行依据:

      ● 变量的先后顺序是:L –> E –> G –>B 的规则查找
      ● 在子程序中定义的变量称为局部变量
      ● 在程序的一开始定义的变量称为全局变量
      ● 全局变量作用域是整个程序,局部变量作用域是定义该变量的子程序
      ● 当全局变量与局部变量同名时:在定义局部变量的子程序内,局部变量起作用,在其它地方全局变量起作用
      ● 当内部作用域想修改外部作用域的变量时,就要用到global和nonlocal关键字了
      ● 局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问

      全局变量: 如下定义并使用一个全局变量,来看一下效果吧.

      >>> import os
      >>> import sys
      >>> 
      >>> sum=100                      #这就是一个全局变量
      >>> 
      >>> def print_sum():
          print("函数中调用sum: ",sum)
      
      >>> print_sum()                  #函数中可以读取到
      函数中调用sum:  100
      >>> 
      >>> print("函数外调用sum: ",sum)  #外部依然可以读取到
      函数外调用sum:  100
      

      局部变量: 如下定义并使用一个局部变量,来看一下效果吧.

      >>> import sys
      >>> import os
      >>> 
      >>> def print_sum():
          sum=100
          print("函数中调用sum: ",sum)
      
      >>> print_sum()
      函数中调用sum:  100
      >>> print("函数外调用sum: ",sum)
      函数外调用sum:  <built-in function sum>
      

      局部转全局: 将一个局部变量通过global关键字,转换为全局变量.

      >>> import os
      >>> import sys
      >>> 
      >>> def print_num():
          global num
          num=1000
          print("函数内调用: ",num)
      
      >>> print_num()
      函数内调用:  1000
      >>> 
      >>> print("函数外调用: ",num)
      函数外调用:  1000
      

      外层非全局: 如果要修改嵌套作用域(enclosing 作用域,外层非全局作用域)中的变量则需要nonlocal关键字声明一下.

      >>> import sys
      >>> 
      >>> def outer():
          num=100
          def inner():
              nonlocal num             #声明成外层非全局作用域
              num=1000
              print("inner层:",num)
          inner()
          print("outer层:",num)
      
      >>> outer()
      inner层: 1000
      outer层: 1000
      


      ## Python 函数的详解

      函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段,函数能提高应用的模块性,和代码的重复利用率,一个较大的程序一般应分为若干个程序块,每一个模块用来实现一个特定的功能.所有的高级语言中都有子程序这个概念,用子程序实现模块的功能.在Python语言中,子程序的作用是由一个主函数和若干个函数构成,由主函数调用其他函数,其他函数也可以互相调用,同一个函数可以被一个或多个函数调用任意多次.

      函数是python为了代码最大程度地重用和最小化代码冗余而提供的基本结构,函数是一种设计工具,它能让程序员将复杂的系统分解为可管理的部件,函数用于将相关功能打包并参数化.

      在Python中可以创建如下4种函数:

      ● 全局函数:定义在模块
      ● 局部函数:嵌套于其它函数中
      ● lambda函数:表达式,如需多次调用
      ● 方法:与特定数据类型关联的函数,并且只能与数据类型关联一起使用

      函数的相关定义规则:

      ● 函数代码块以def关键词开头,后接函数标识符名称和圆括号()
      ● 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数
      ● 函数的第一行语句可以选择性地使用文档字符串,-用于存放函数说明
      ● 函数内容以冒号起始,并且必须保持缩进,否则会当作普通语句来执行
      ● return [表达式] 结束函数,选择性地返回一个值给调用方,也就是返回值

      ◆有参与无参函数◆

      定义无参函数: 如下我们编写一个无参数的函数,并在后面直接调用其执行.

      >>> import sys
      >>> 
      >>> def lyshark():                 #定义lyshark()函数,函数执行打印
      ...     print("hello lyshark!")
      >>> 
      >>> lyshark()                      #调用了lyshark()函数,打印一段话
      hello lyshark!
      >>> 
      

      定义有参函数: 如下我们编写两个函数,分别给予相应的参数,其返回值则不相同.

      >>> import sys
      >>> 
      >>> def area(width,height):       #一个计算面积的函数,其中width,height是形式参数
      ...     return width * height
      >>> 
      >>> def print_me(name):           #一个打印函数,其中name是形式参数
      ...     print("welcome:",name)
      >>> 
      >>>   
      >>> print_me("lyshark")           #调用打印函数,并掺入相应的数值
      welcome: lyshark
      >>> 
      >>> w=10
      >>> h=25
      >>> print(area(w,h))              #计算平方并打印,传入数值变量计算
      250
      

      ◆函数的参数传递◆

      默认情况下,参数通过其位置进行传递,从左至右,这意味着,必须精确地传递和函数头部参数一样多的参数,但也可以通过关键字参数、默认参数或参数容器等改变这种机制.

      通常Python中所支持的参数传递形式:

      ● 普通参数:普通参数传递,在定义函数时就指定了规律是从左至右传递
      ● 默认参数:定义函数时是使用"name=value"的语法直接给变量一个值,从而传入的值可以少于参数个数
      ● 指定参数:调用函数时指定"name形式参数=value实际参数"的语法通过参数名进行匹配
      ● 动态参数:在我们定义函数时,形式参数中收集任意多基于普通参数
      【定义函数时使用* :收集普通参数,返回元组,*args】【定义函数时使用**:收集指定参数,返回列表,**kwargs】
      ● 动态参数解包:在调用函数时,使用**开头的参数,从而传递任意多基于普通或指定参数

      什么是形式参数和实际参数:

      ● 形式参数:形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元.因此,形参只在函数内部有效.函数调用结束返回主调用函数后则不能再使用该形参变量
      ● 实际参数:实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参.因此应预先用赋值,输入等办法使参数获得确定值

      普通参数传递: 定义一个函数体,并且为其传递三个参数,执行函数并打印结果.

      >>> def stu(name,age,country):
      ...     print("姓名:",name)
      ...     print("年龄:",age)
      ...     print("国籍:",country)
      
      >>> stu("lyshark",22,"CN")
      姓名: lyshark
      年龄: 22
      国籍: CN
      >>>
      >>> stu("zhangsan",33,"CN")
      姓名: zhangsan
      年龄: 33
      国籍: CN
      

      带默认参数传递: 同样的,我们可以给指定的字段添加默认参数,如果用户不输入则默认使用指定参数,这里需要注意的是:如果您要使用带默认参数的函数,则需要把带参数的字段,放在函数最后一项.

      >>> def stu(age,country,name="none",sex="man"):
      ...     print("姓名: ",name)
      ...     print("性别: ",sex)
      ...     print("年龄: ",age)
      ...     print("国籍: ",country)
      ...
      >>>
      >>> stu(23,"CN","lyshark","man")    #此时我们给予全部的参数则无默认值
      姓名:  lyshark
      性别:  man
      年龄:  23
      国籍:  CN
      >>> stu("zhangsan","mal",23,"CN")   #形参如何排列,实参就得如何排列
      姓名:  23
      性别:  CN
      年龄:  zhangsan
      国籍:  mal
      >>> stu(23,"CN")                    #传递输入是忽略带有默认值的字段
      姓名:  none
      性别:  man
      年龄:  23
      国籍:  CN
      

      动态参数传递(传递列表): 若你的函数在定义时不确定用户想传入多少个参数,就可以使用非固定参数,传递一个列表.

      >>> def stu(name,age,*args):                  #*args会把多传入的参数变成一个元组.
      ...     print(name,age,args)
      >>>
      >>> stu("lyshark",22)
      lyshark 22 ()                                 #这个()就是args,只是因为没传值,所以为空.
      >>> 
      >>> stu("lyshark",22,"a","b","c","d")         #传值后会把它当作一个列表
      lyshark 22 ('a', 'b', 'c', 'd')
      >>> 
      >>> ls=[1,2,3,4,5]                             #先声明列表
      >>> stu("lyshark",22,ls)                       #传递这个列表
      lyshark 22 ([1, 2, 3, 4, 5],)                  #第三个值,打印出列表
      

      执行函数时有·*,则把所有迭代对象拆分为单个元素作为元组的元素,如传入列表,会把列表中每一个元素遍历添加到元组中当作一个元素,如下可看到差别.

      >>> def fun(*args):                          #动态参数返回元组
      ...     print(args,type(args))
      >>>
      >>> lists=[1,2,3,4]                          #定义要传递的列表
      >>> fun(lists)                               #传递一个列表
      ([1, 2, 3, 4],) <class 'tuple'>
      >>> 
      >>> fun(*lists)
      (1, 2, 3, 4) <class 'tuple'>
      

      动态参数传递(传递字典): 我们可以使用**kwargs默认参数,来接收一个字典,并通过函数体打印出来.

      >>> def stu(name,age,*args,**kwargs):
      ...     print(name,age,args,kwargs)
      >>> 
      >>> stu("lyshark",22)                                     #传递默认参数
      lyshark 22 () {}
      >>> 
      >>> stu("lyshark",22,"a","b",sex="Male",province="山东")  #传递元组和字典
      lyshark 22 ('a', 'b') {'sex': 'Male', 'province': '山东'}
      

      如上方法是在调用函数的时候传递的字典,当然我们也可以直接将一个现有的字典传递进去.

      >>> def fun(name,**kwargs):
      ...     print(name,kwargs)
      >>>
      >>> dic={"k1":"v1","k2":"v2"}
      >>> 
      >>> fun("lyshark",**dic)
      lyshark {'k1': 'v1', 'k2': 'v2'}
      

      动态参数传递(万能参数): 我们使用*与**通常情况下可以传递任何值,所以称作万能参数.

      >>> def fun(*args,**kwargs):
      ...     print(args,type(args))
      ...     print(kwargs,type(kwargs))
      >>>
      >>> lists=[1,2,3,4,5,6,7,8,9]
      >>> dic={"a":1001,"b":1002,"c":1003}
      >>> 
      >>> fun(*lists,**dic)
      (1, 2, 3, 4, 5, 6, 7, 8, 9) <class 'tuple'>
      {'a': 1001, 'b': 1002, 'c': 1003} <class 'dict'>
      

      拓展补充(1): 其实在python中我们经常看到万能参数,比如str.format()方法,就是一个典型的万能参数的例子,如下演示,了解即可.

      >>> string="hello {0},age {1}"
      >>> print(string.format("lyshark",22))
      hello lyshark,age 22
      >>> 
      >>> string="hello {name},age {age}"
      >>> print(string.format(name="lyshark",age=22))
      hello lyshark,age 22
      >>> 
      >>> string="hello {0},age {1}"
      >>> print(string.format(*["lyshark",22]))
      hello lyshark,age 22
      >>> 
      >>> dic ={"name":"lyshark","age":22}
      >>> string="hello {name},age {age}"
      >>> 
      >>> print(string.format(**dic))
      hello lyshark,age 22
      

      拓展补充(2): 在多个同名函数的情况下,默认使用最后后一个函数,最后一个函数名会指向新的内存对象,函数名是函数体在内存中的引用.

      >>> def fun(a,b):
      ...     return a+b
      >>> def fun(a,b):
      ...     return a*b
      >>> 
      >>> print(fun(3,3))
      9
      

      拓展补充(3): 函数传递的是指针,所以我们的数据会被保留下来如下例子.

      >>> def fun(x):
      ...     x.append(8888)
      >>> 
      >>> lists=[1,2,3]
      >>> fun(lists)
      >>> 
      >>> print(lists)
      [1, 2, 3, 8888]
      

      拓展补充(4): 如下例子由于函数没有定义返回值,所以默认为none.

      >>> def fun(x):
      ...     x.append(8888)
      >>>
      >>> lists=[1,2,3]
      >>> lists=fun(lists)
      >>> 
      >>> print(lists)
      None
      

      ◆通用函数返回值◆

      return语句用来实现退出函数,选择性地向调用方返回一个表达式,不带参数值的return语句返回None,之前的例子都没有示范如何返回数值,如下先来看一下返回语句的规则:

      ● Return 语句用于退出函数,选择性地向调用方返回一个表达式
      ● 如果Return语句不带任何参数,则不带参数值的Return语句默认返回None
      ● 函数在执行过程中只要遇到Return,就会停止执行并返回结果,通俗的将遇到ret说明函数结束

      默认函数返回: 如下使用默认函数返回,通常情况下返回一个确定数值.

      >>> def add(num1,num2):
      ...     sum=num1+num2
      ...     print("函数内返回:",sum)
      ...     sum=sum+100
      ...     return sum
      >>>
      >>> temp=add(10,20)
      函数内返回: 30
      >>> print("函数外返回:",temp)
      函数外返回: 130
      

      选择性返回: 在函数体内部使用判断结构,如果输入的是偶数返回0,否则返回-1.

      >>> def check(num):
      ...     if (num %2 ==0):
      ...     	return 0
      ...     else:
      ...     	return -1
      >>>
      >>> print(check(2))
      0
      >>> print(check(3))
      -1
      

      返回一个列表: 通过函数体的运算后,将一个列表返回给外部来接收使用.

      import os
      
      def temp_max(*args):
          all_max=[]
          temp=args
          for x in range(len(*args)):
              if temp[0][x] >= 50:
                  all_max.append(temp[0][x])
          return all_max
      
      a=[11,56,87,99,86,34,56,22,77,53]
      my_max=[]
      
      my_max=temp_max(a)
      print(my_max)
      

      ◆通用函数的闭包◆

      函数是一段可执行代码,编译后就固化了,每个函数在内存中只有一份实例,得到函数的入口点便可以执行函数了,一个函数可作为另一个函数的参数或返回值,可以赋给一个变量.函数可以嵌套定义,即在一个函数内部可以定义另一个函数,有了嵌套函数这种结构,便会产生闭包问题.

      闭包是由函数及其相关的引用环境组合而成的实体(闭包=函数+引用环境)这个从字面上很难理解,Python中的闭包从表现形式上定义(解释)为:如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包(closure).这个定义是相对直白的,好理解的,下面举一个简单的例子来说明.

      >>> def adds(x):
      ...     def adder(y):return x+y
      ...     return adder
      ...
      >>> c=adds(10)
      >>> type(c)
      <class 'function'>
      >>> c.__name__
      'adder'
      >>> c(10)
      20
      

      如上代码,在一个内部函数里:adder(y)就是这个内部函数,对在外部作用域(但不是在全局作用域)的变量进行引用:x就是被引用的变量,x在外部作用域adds里面,但不在全局作用域里,则这个内部函数adder就是一个闭包.闭包=函数块+定义函数时的环境,adder就是函数块,x就是环境,当然这个环境可以有很多,不止一个简单的x.

      闭包返回函数: 通过使用闭包,返回一个函数,并使用函数做进一步的计算.

      import os
      
      def post_sum(*args):
          def sum():
              x=0
              for y in args:
                  x=x+y
              return x
          return sum
      
      
      post_sum(1,2,3,4,5)    #post_sum并没执行,而是返回一个指向求和的函数的函数名sum的内存指针
      
      fp=post_sum(1,2,3,4,5) 
      print(type(fp))        #调用f()函数,才真正调用了sum函数进行求和,这其实就是闭包
      
      print(fp())
      

      闭包选择返回: 通过返回值判断,来使用不同的闭包函数,从而返回不同的结果.

      import os
      
      def post(temp,*args):
          def sum():
              x=0
              for y in args:
                  x=x+y
              return x
          def div():
              x=1
              for y in args:
                  x=x*y
              return x
      
          if temp=="1":
              return sum
          else:
              return div
      
      fp=post("1",1,2,3,4)     #使用加法闭包函数
      print(type(fp))
      print(fp())
      
      fp1=post("0",1,2,3,4)    #使用乘法闭包函数
      print(type(fp1))
      print(fp1())
      

      闭包返回函数列表: 通过使用闭包函数,一次性返回多个函数列表,每个函数拥有独立空间.

      >>> def count():
          fs=[]
          for i in range(1,4):
              def f():
                  return i*i
              fs.append(f)
          return fs
      
      >>> f1,f2,f3=count()
      >>> print(f1())
      9
      >>> print(f2())
      9
      >>> print(f3())
      9
      

      ◆函数嵌套与递归◆

      除了函数的闭包以外,函数还支持两种调用方式,一种是嵌套函数,另一种是递归函数,这里需要注意的是,最好在开发中尽量少用这样的结构,这种结构一旦层数变多将很难后期进行维护,所以你懂的.

      嵌套函数:即指在一个函数体中,嵌套另外一个函数体,内部函数执行后将结果返回给外部函数使用
      递归函数:函数在其内部调用它自己,就叫做递归,但递归需设置退出条件,不然会一直递归下去,变成一个死循环

      嵌套函数: 定义一个嵌套函数,并打印出其执行轨迹,并理解其原理.

      import os
      
      name="lyshark"
      
      def chage_name():
          name="lyshark blog"
      
          def chage_name_new():
              name="mkdirs blog"
              print("第3层循环打印: ",name)
      
          chage_name_new()              #在函数内部调用内部的函数
          print("第2层循环打印: ",name)  #第二层函数执行结果
      
      chage_name()                      #调用最外层函数
      print("查看最外层变量: ",name)     #查看外层变量
      
      >>>
      第3层循环打印:  mkdirs blog
      第2层循环打印:  lyshark blog
      查看最外层变量:  lyshark
      

      递归函数(1): 使用递归的方式实现指定数字的阶乘,如下所示.

      import os
      
      def fun(n):
          if 0==n:              # n=0 的话直接返回空,对用户输入的零进行判断
              return None
          elif 1==n:            # n=1 的话就不再递归
              return n
          else:
              return n*fun(n-1) # 递归在执行f(n-1),直到f(1)
      
      print(fun(5))             # 120
      '''
          f(5)的执行过程如下
              ===> f(5)
              ===> 5 * f(4)
              ===> 5 * (4 * f(3))
              ===> 5 * (4 * (3 * f(2)))
              ===> 5 * (4 * (3 * (2 * f(1))))
              ===> 5 * (4 * (3 * (2 * 1)))
              ===> 5 * (4 * (3 * 2))
              ===> 5 * (4 * 6)
              ===> 5 * 24
              ===> 120
      '''
      

      递归函数(2): 如下实例传入一个数据,每次递归增加1,直到满足x>=5则结束递归.

      >>> def fun(x):
      ...     x+=1
      ...     if x >= 5:
      ...        return 0
      ...     return fun(x)
      >>>
      >>> r=fun(5)
      >>> print(r)
      0
      

      递归函数(3): 如下实例,传入一个数据,每次在数据本身除以2直到除数为1则停止.

      >>> def fun(x):
      ...     print("--->%d"%x)
      ...     if int(x/2)==0:
      ...         return x
      ...     return fun(int(x/2))
      >>>
      >>> fun(10)
      --->10
      --->5
      --->2
      --->1
      
      

      小总结: 使用递归实现二分法,也就是折半查找法.

      data = [1, 3, 6, 7, 9, 12, 14, 16, 17, 18, 20, 21, 22, 23, 30, 32, 33, 35]
      
      def binary_search(dataset,find_num):
          print(dataset)
       
          if len(dataset) >1:
              mid = int(len(dataset)/2)
              if dataset[mid] == find_num:             #find it
                  print("找到数字",dataset[mid])
              elif dataset[mid] > find_num :           # 找的数在mid左面
                  print("\033[31;1m找的数在mid[%s]左面\033[0m" % dataset[mid])
                  return binary_search(dataset[0:mid], find_num)
              else:                                    # 找的数在mid右面
                  print("\033[32;1m找的数在mid[%s]右面\033[0m" % dataset[mid])
                  return binary_search(dataset[mid+1:],find_num)
          else:
              if dataset[0] == find_num:               #find it
                  print("找到数字啦",dataset[0])
              else:
                  print("没的分了,要找的数字[%s]不在列表里" % find_num)
      
      binary_search(data,66)
      

      ◆lambda 匿名函数◆

      python 使用lambda来创建匿名函数,所谓匿名即不再使用 def 语句这样标准的形式定义一个函数.

      匿名函数的几个注意事项:

      ● lambda只是一个表达式,函数体比 def 简单很多
      ● lambda表达式会自动return返回值,条件为真返回True,条件为假返回False
      ● lambda函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数
      ● lambda的主体是一个表达式,而不是一个代码块,仅仅能在lambda表达式中封装有限的逻辑进去
      ● lambda函数看起来只能写一行,却不等同于C或C++的内联函数,应该区别对待,毕竟是两们不同语言.

      定义匿名函数(1): 使用功能最基本的语法定义一个匿名函数.

      >>> sum=lambda x,y,z: x+y+z
      >>> 
      >>> print("三个数相加:",sum(10,20,30))
      三个数相加: 60
      

      定义匿名函数: 对于简单的函数,也存在一种简便的表示方式,即:lambda表达式.

      # ###################### 普通函数 ######################
      # 定义函数(普通方式)
      def func(arg):
          return arg + 1
          
      # 执行函数
      result = func(123)
          
      # ###################### lambda ######################
          
      # 定义函数(lambda表达式)
      my_lambda = lambda arg : arg + 1
          
      # 执行函数
      result = my_lambda(123)
      

      向匿名函数传递列表: 想一个匿名函数传递一个列表,并分别计算后返回相应数据.

      >>> res=map(lambda x:x**2,[1,5,4,8])
      >>> 
      >>> for i in res:
          print(i)
      
      1
      25
      16
      64
      

      ◆函数编写实例(拓展)◆

      拓展(1): 编写函数,计算传入字符串中数字、字母、空格、其他的个数,并统计出来. 

      def fun(s):
          digitnum, alphanum, sapcenum, othernum=0,0,0,0
          for i in s:
              if i.isdigit():
                  digitnum+=1
              elif i.isalpha():
                  alphanum+=1
              elif i.isspace():
                  sapcenum+=1
              else:
                  othernum+=1
          return (digitnum,alphanum,sapcenum,othernum)
      

      拓展(2): 编写函数,判断用户传入的对象(字符串、列表、元组)的长度是否大于5,并输入相关状态.

      def fun(s):
          ret=False
          if isinstance(s,str) or isinstance(s,list) or isinstance(s,tuple):
             if len(s)>5:
                 ret=True
          return ret
      

      拓展(3): 编写函数,检查用户传入的对象(字符串、列表、元组)的每一个元素是否含有空内容.

      def fun(s):
          ret=False
          if isinstance(s, str) or isinstance(s, list) or isinstance(s, tuple):
              for i in s:
                 if i=='':
                     ret=True
                     break
          return ret
      

      拓展(4): 编写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者.

      def fun(s):
          if isinstance(s,list) or isinstance(s,tuple):
              l=[]
              for i in range(1,len(s),2):
                  l.append(s[i])
              return l
          return None
      

      拓展(5): 编写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者.

      def fun(s):
          if isinstance(s,dict):
              for i in s:
                  if len(s[i])>2:
                      s[i]=s[i][0:2]
          return s
      


      ## Python 内置函数

      help(): 详细查看某个类有那些方法或者方法的具体使用.

      >>> help(str)
      >>> help(str.strip)
      

      dir(): 查看指定类型,支持的方法或具体使用.

      >>> dir(os)
      >>> dir(str.strip)
      

      int(): 实例化数字类型,或将其他类型转换为数字类型,或各种进制转换为十进制.

      >>> temp = int(21)           #实例化数字类型
      >>> print(type(temp),temp)   #打印类型,和参数值
      <class 'int'> 21
      
      >>> print(int("110101",base=2))   #将二进制转为十进制
      53
      >>> print(int("156",base=8))      #将八进制转为十进制
      110
      >>> print(int("1A2C31",base=16))  #将十六进制转为十进制
      1715249
      

      float(): 实例化浮点类型,或将数字字符串转换为浮点型,仅限于数字字符串.

      (1) 实例化浮点类型
      >>> f = float(12)
      >>> print(type(f),f)
      <class 'float'> 12.0
      
      (2) 将数字字符串转换为浮点类型
      >>> s = "12"
      >>> type(s)
      <class 'str'>
      >>> i = float(s)
      >>> print(type(i),i)
      <class 'float'> 12.0
      

      str(): 实例化字符串类型,或将其他类型转换为字符串类型.

      (1) 实例化字符串类型
      >>> string = "python"
      >>> print(type(string))
      <class 'str'>
      
      (2) 将其他类型转换为字符串类型了
      >>> string = 88888
      >>> type(string)
      <class 'int'>
      >>> i = str(string)
      >>> print(type(i),i)
      <class 'str'> 88888
      
      >>> l = [1,2,3,4,5]
      >>> a = str(l)
      >>> print(type(a),a)
      <class 'str'> [1, 2, 3, 4, 5]
      #注意:列表格式或字典格式的字符串类型转换为列表或者字典需要使用json模块
      

      list(): 将其他类型转为列表类型.

      (1) 实例化列表类型
      >>> l = list(["redhat","centos","ubuntu"])
      >>> print(type(l),l)
      <class 'list'> ['redhat', 'centos', 'ubuntu']
      
      (2) 将其他类型转换为列表
      >>> s = "python"
      >>> l = list(s)
      >>> print(type(l),l)
      <class 'list'> ['p', 'y', 't', 'h', 'o', 'n']
      
      >>> t = ("python","I","like")
      >>> l1 = list(t)
      >>> print(type(l1),l1)
      <class 'list'> ['python', 'I', 'like']
      

      tuple(): 实例化元组类型,或将其他类型转换为元组类型.

      (1) 实例化元组类型
      >>> t1 = tuple(("redhat","centos","ubuntu","opensuse"))
      >>> print(type(t1),t1)
      <class 'tuple'> ('redhat', 'centos', 'ubuntu', 'opensuse')
      
      (2) 将其他类型转换为元组类型
      >>> l = [11,22,33,44,55]
      >>> type(l)
      <class 'list'>
      >>> t = tuple(l)
      >>> print(type(t),t)
      <class 'tuple'> (11, 22, 33, 44, 55)
      

      dict(): 实例化字典,或将元组列表转换为字典类型仅限元组形式列表类型.

      (1) 实例化字典类型
      >>> d1 = dict({"os":"ubuntu","version":15.10,"kernel":"4.2.0-16"})
      >>> print(type(d1),d1)
      <class 'dict'> {'version': 15.1, 'os': 'ubuntu', 'kernel': '4.2.0-16'}
      
      (2) 将元组形式的列表转换为字典
      >>> l1 = [('a',1),('b',11),('c',45)]
      >>> d1 = dict(l1)
      >>> print(type(d1),d1)
      <class 'dict'> {'b': 11, 'c': 45, 'a': 1}
      
      #注意:zip()这个内置方法可以将两个列表生成元组形式列表类型
      

      set(): 实例化可变集合类型,或其他类型转换成集合类型.

      (1) 实例化集合类型
      >>> s = set({"fedora","geentoo","debian","centos"})
      >>> print(type(s),s)
      <class 'set'> {'fedora', 'centos', 'debian', 'geentoo'}
      
      (2) 将其他类型转换成集合set类型
      >>> l = ["centos","centos","redhat","ubuntu","suse","ubuntu"]
      >>> s = set(l)
      >>> print(type(s),s)
      <class 'set'> {'ubuntu', 'centos', 'redhat', 'suse'}
      
      >>> d = {"kernel":"Linux","os":"ubuntu","version":"15.10"}
      >>> s = set(d.keys())
      >>> print(type(s),s)
      <class 'set'> {'kernel', 'version', 'os'}
      

      frozenset(): 实例化不可变集合,或类型转换成不可变集合类型.

      (1) 实例化不可变集合
      >>> fs = frozenset({"redhat","centos","fedora","debian","ubuntu"})
      >>> print(type(fs),fs)
      <class 'frozenset'> frozenset({'fedora', 'ubuntu', 'centos', 'debian', 'redhat'})
      
      (2) 类型转换成不可变集合
      >>> l = [1,2,3,4,4,5,5]
      >>> fs1 = frozenset(l)
      >>> print(type(fs1),fs1)
      <class 'frozenset'> frozenset({1, 2, 3, 4, 5})
      

      bool(): 0,"",None,[],(),{}都为假,其余都为真,是int的子类.

      >>> bool(0)
      False
      >>> bool("abc")
      True
      >>> bool("")
      False
      >>> bool([])
      False
      >>> bool()
      False
      >>> issubclass(bool,int)
      True
      

      bytes(): 将字符串类型转换成字节byte类型,在计算机底层都是以二进制存储数据的.

      (1) 将字符串转换为字节类型
      >>> s = "大神"
      >>> p = bytes(s,encoding="utf-8")
      >>> print(type(p),p)
      <class 'bytes'> b'\xe8\x9f\x92\xe8\x9b\x87'
      
      (2) 将字节类型重新转换为字符串
      >>> new_s = str(p,encoding="utf-8")
      >>> print(type(new_s),new_s)
      <class 'str'> 大神
      

      bytearray(): 和bytes()是一样的,只是返回一个byte列表,且序列中的元素的取值范围为 [0,255].

      >>> a = bytearray("大神",encoding="utf-8")
      >>> print(type(a),a)
      <class 'bytearray'> bytearray(b'\xe8\x9f\x92\xe8\x9b\x87')
      >>> a[0]
      232
      >>> a[1]
      159
      >>> a[2]
      146
      >>> a[4]
      155
      >>> a[5]
      135
      

      open(): 打开一个文件对象,用于对文件的操作处理.

      >>> with open("/etc/passwd","r") as f:
      ... for line in f:
      ...     print(line)
      

      type(): 查看某个实例属于哪个类型.

      >>> s = "python"
      >>> l = [1,2,3,4]
      >>> t = ("linux","python")
      >>> d = {"name":"linux","age":12}
      >>> print(type(s),type(l),type(t),type(d))
      <class 'str'> <class 'list'> <class 'tuple'> <class 'dict'>
      

      len(): 查看实例中的长度,说白点就是元素个数,以为单位字符计算.

      >>> s = "python"
      >>> len(s)
      6
      
      >>> s = "大神"
      >>> len(s)
      2
      
      >>> b = bytes(s,encoding="utf-8") #以字节为单位计算
      >>> len(b)
      6
      

      input(): 默认输入的格式为字符串,输入的数字也是字符串,需要int()转换.

      >>> data = input("please say something:")
      please say something:today is good day
      >>> print(data)
      today is good day
      
      >>> data1 = input("please say something:")
      please say something:123
      >>> print(type(data1),data1)
      <class 'str'> 123
      
      # print() 输出,格式化输出
      >>> name = "python"
      >>> print("I love %s" % name)
      I love python
      

      all(): 接收一个迭代对象,当对象中的元素全部为真的时候,才会返回真.

      >>> s = ["python","php","java"]
      >>> print(all(s))
      True
      >>> a = ["","python","php"]
      >>> print(all(a))
      False
      

      any(): 只要有一个为真则为真,全为假则为假.

      >>> a = ["","python","php"]
      >>> print(any(a))
      True
      >>> s = ["",0,(),[],{},None]
      >>> print(any(s))
      

      max(),min(),sum(): 计算数字系列中的最大,最小,求和.

      >>> r = max([11,22,33])
      >>> print(r)
      33
      
      >>> r1 = min([11,22,33])
      >>> print(r1)
      11
      
      >>> r2 = sum([11,22,33])
      >>> print(r2)
      65
      

      abs(): 求一个数的绝对值.

      >>> print(abs(-123123))
      123123
      >>> print(abs(12345))
      12345
      

      power(): 求几次方和**是一样的.

      >>> print(pow(2,10))
      1024
      >>> 2**10
      1024
      

      round(): 四舍五入,计算函数.

      >>> print(round(18.8))
      19
      >>> print(round(18.4))
      18
      

      divmod(): 除法得余数,在分页功能中会用到.

      >>> print(divmod(78,10))
      (7, 8)
      >>> print(divmod(45,10))
      (4, 5)
      

      chr(),ord(): ascii表的对应关系,十进制转字符,字符转数字.

      >>> r = chr(65)
      >>> print(r)
      A
      >>> chr(65),chr(122)
      ('A', 'z')
      
      >>> n = ord("a")
      >>> print(n)
      97
      

      bin(),oct(),hex(): 几个常用的进制转换.

      >>> bin(10)    #十进制转二进制
      '0b1010'
      >>> oct(9)     #十进制转八进制
      '0o11'
      >>> hex(15)    #十进制转十六进制
      '0xf'
      

      enumerate(): 枚举类型,实现循环的时候打印出行号,默认是0开始,也可以设置1开始.

      >>> li = ["redhat","centos",'fedodra']
      >>> for index,data in enumerate(li):
      ... print(index,data)
      ... 
      0 redhat
      1 centos
      2 fedodra
      
      >>> li = ["redhat","centos",'fedodra']
      >>> for index,data in enumerate(li,1):
      ... print(index,data)
      ... 
      1 redhat
      2 centos
      3 fedodra
      

      sorted(): 排序,不能数字和字母在一起排序和list.sorted()是一样的.

      >>> l1 = [1,5,2,55,33]
      >>> a = sorted(l1)
      >>> print(a)
      [1, 2, 5, 33, 55]
      
      >>> l2 = [1,5,2,55,33,66]
      >>> l2.sort()
      >>> print(l2)
      [1, 2, 5, 33, 55, 66]
      

      reversed(): 逆序和list.reverse()是一样的.

      >>> l3 = [33,22,55,11]
      >>> a = reversed(l3)
      >>> print(list(a))
      
      >>> l4 = [33,22,55,11,44]
      >>> l4.reverse()
      >>> print(l4)
      [44, 11, 55, 22, 33]
      

      slice(): 和字符串列表的切片的功能是一样的.

      >>> s = "python"
      >>> s[0:4]
      'pyth'
      >>> s[0:4:2]
      'pt'
      
      >>> b = slice(0,4,2)
      >>> print(b)
      slice(0, 4, 2)
      >>> s[b]
      'pt'
      

      zip(): 取一个或多个序列为参数,把序列中的并排元素配成元组,返回元组形式的列表类型,当元素长度不同时以最短序列的长度为准.

      >>> l1 = ['烧饼',11,22,33]
      >>> l2 = ['is',11,22,33]
      >>> l3 = ['sb',11,22,33]
      >>> r = zip(l1,l2,l3)
      >>> print(list(r))
      [('烧饼', 'is', 'sb'), (11, 11, 11), (22, 22, 22), (33, 33, 33)]
      
      >>> temp = list(r)[0]
      >>> ret = ' '.join(temp)
      >>> print(ret)
      烧饼 is sb
      
      # 两个列表合成一个字典
      >>> keys = [1,2,3,4,5,6,7]
      >>> vaules = ['Sun','Mon','Tue','Wed','Thu','Fri','Sat']
      >>> D = {}
      >>> for (k,v) in zip(keys,values):
      ... D[k] = v
      ... 
      >>> D
      {1: 'Sun', 2: 'Mon', 3: 'Tue', 4: 'Wed', 5: 'Thu', 6: 'Fri', 7: 'Sat'}
      

      complex(): 复数之间的运算准则.

      >>> complex(1, 2)
      (1 + 2j)
      >>> complex(1) #数字
      (1 + 0j)
      >>> complex("1") #当做字符串处理
      (1 + 0j)
      >>> complex("1+2j")
      (1 + 2j)
      #注意:这个地方在“+”号两边不能有空格,也就是不能写成"1 + 2j",应该是"1+2j",否则会报错
      

      globals(),locals(): 显示全局变量和本地变量.

      >>> NAME = 'tomcat'
      >>> def show():
      ... a = 123
      ... b = 456
      ... print(locals())
      ... print(globals())
      ... 
      >>> show()
      

      range(): 生成遍历循环数据.

      >>> for i in range(4): 
      ... print(i)
      ... 
      0
      1
      2
      3
      
      >>> for i in range(1,4,2): 
      ... print(i)
      ... 
      1
      3
      

      format(): 格式化输出的,和百分号是同样的功能.

      >>> print("1 am {},age {}".format('jason',18)) # 用{}当作占位符
      >>> print("1 am {},age {}".format(*['jason',18])) # 用*传递一个列表进去
      >>> print("1 am {0},age {1},score{1}".format('jason',18)) # 1 am jason,age 18,score18 用 0,1等数字来应用
      

      hash(): 一般用在字典中的Key是进行hash计算后,值存入内存,hash值.

      >>> dic = {'name':'SB'}
      >>> print(hash(dic['name']))
      

      filter(): filter(函数,可迭代对象),fileter内部,循环第二个参数,将每一个元素执行第一个函数.

      >>> def f2(a):
      ... if a>22:
      ... return True
      
      >>> li = [11,22,33,44,55]
      >>> ret = filter(f2,li)
      >>> print(list(ret))
      
      #注意: 对于简单的函数用lambda可以实现
      >>> result = filter(lambda a: a > 33,li)
      >>> print(list(result))
      

      map(): map(函数,可迭代的对象),循环第二个参数,将每一个元素执行第一个函数,就把返回值存入结果result中.

      >>> l1 = [11,22,33,44,55,66]
      >>> def f3(a):
      ... return a + 100
      
      >>> result = map(f3,l1)
      >>> print(list(result))
      
      #注意: 对于简单的函数用lambda可以实现
      >>> result = map(lambda a: a + 100,l1)
      >>> print(list(result))
      

      iter(): 用于生成迭代器,for循环就是调用iter()生成迭代对象.
      next(): 用于遍历迭代器,for循环就是调用next()实现,不过当使用next()遍历时,迭代器没有元素时会报错,for则不会.

      >>> a = iter([1,2,3,4,5])
      >>> a
      <list_iterator object at 0x101402630>
      >>> a.__next__()
      1
      >>> a.__next__()
      2
      >>> a.__next__()
      3
      >>> a.__next__()
      4
      >>> a.__next__()
      5
      >>> a.__next__()
      Traceback (most recent call last):
        File "<stdin>", line 1, in <module>
      StopIteration
      
      版权声明:本文内容来自第三方投稿或授权转载,原文地址:https://my.oschina.net/lyshark/blog/5550942,作者:LyShark,版权归原作者所有。本网站转在其作品的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如因作品内容、版权等问题需要同本网站联系,请发邮件至ctyunbbs@chinatelecom.cn沟通。

      上一篇:在Linux系统中测试其他主机的端口是否能正常访问提示“telnet: connect to address 192.168.1.165: No route to host“

      下一篇:Python 使用xlsxwriter绘制Excel表格

      相关文章

      2025-05-19 09:04:44

      js小题2:构造函数介绍与普通函数对比

      js小题2:构造函数介绍与普通函数对比

      2025-05-19 09:04:44
      new , 关键字 , 函数 , 对象 , 构造函数
      2025-05-19 09:04:30

      【Canvas技法】辐射式多道光影的实现

      【Canvas技法】辐射式多道光影的实现

      2025-05-19 09:04:30
      代码 , 函数 , 实现
      2025-05-19 09:04:22

      外设驱动库开发笔记54:外设库驱动设计改进的思考

      外设驱动库开发笔记54:外设库驱动设计改进的思考

      2025-05-19 09:04:22
      使用 , 函数 , 初始化 , 定义 , 对象
      2025-05-19 09:04:14

      C语言字符函数和字符串函数--(超全超详细)

      C语言字符函数和字符串函数--(超全超详细)

      2025-05-19 09:04:14
      函数 , 字符 , 字符串
      2025-05-16 09:15:24

      如何将一串数字用函数的方法倒过来(C语言)

      如何将一串数字用函数的方法倒过来(C语言)

      2025-05-16 09:15:24
      函数 , 数字 , 数组
      2025-05-14 10:33:31

      【数据结构】第一章——绪论(2)

      【数据结构】第一章——绪论(2)

      2025-05-14 10:33:31
      函数 , 实现 , 打印 , 理解 , 算法 , 输入 , 输出
      2025-05-14 10:33:31

      计算机小白的成长历程——习题演练(函数篇)

      计算机小白的成长历程——习题演练(函数篇)

      2025-05-14 10:33:31
      函数 , 字符串 , 数组 , 知识点 , 编写 , 迭代 , 递归
      2025-05-14 10:33:25

      30天拿下Rust之高级类型

      Rust作为一门系统编程语言,以其独特的内存管理方式和强大的类型系统著称。其中,高级类型的应用,为Rust的开发者提供了丰富的编程工具和手段,使得开发者可以更加灵活和高效地进行编程。

      2025-05-14 10:33:25
      Rust , type , 代码 , 函数 , 类型 , 返回
      2025-05-14 10:33:16

      30天拿下Python之使用Json

      Json的英文全称为JavaScript Object Notation,中文为JavaScript对象表示法,是一种存储和交换文本信息的语法,类似XML。Json作为轻量级的文本数据交换格式,比XML更小、更快,更易解析,也更易于阅读和编写。

      2025-05-14 10:33:16
      json , Json , Python , 字符串 , 对象 , 序列化 , 转换
      2025-05-14 10:33:16

      30天拿下Python之文件操作

      Python是一种高级编程语言,它提供了许多内置函数和模块来处理文件操作,主要包括:打开文件、读取文件、写入文件、关闭文件、获取目录列表等。

      2025-05-14 10:33:16
      Python , 使用 , 函数 , 文件 , 权限 , 目录
      查看更多
      推荐标签

      作者介绍

      天翼云小翼
      天翼云用户

      文章

      33561

      阅读量

      5240303

      查看更多

      最新文章

      【Canvas技法】辐射式多道光影的实现

      2025-05-19 09:04:30

      外设驱动库开发笔记54:外设库驱动设计改进的思考

      2025-05-19 09:04:22

      C语言字符函数和字符串函数--(超全超详细)

      2025-05-19 09:04:14

      如何将一串数字用函数的方法倒过来(C语言)

      2025-05-16 09:15:24

      30天拿下Rust之高级类型

      2025-05-14 10:33:25

      30天拿下Python之使用Json

      2025-05-14 10:33:16

      查看更多

      热门文章

      Python标准输入输出

      2023-04-18 14:15:05

      Python:matplotlib分组Bar柱状图

      2024-09-25 10:15:01

      刷题——Python篇(2)类型转换

      2023-02-13 07:58:38

      Python Pandas将多个dataframe写入Excel文件

      2023-04-21 03:11:35

      Python 函数调用父类详解

      2023-04-23 09:44:31

      Python冒泡排序

      2023-04-18 14:14:43

      查看更多

      热门标签

      java Java python 编程开发 代码 开发语言 算法 线程 Python html 数组 C++ 元素 javascript c++
      查看更多

      相关产品

      弹性云主机

      随时自助获取、弹性伸缩的云服务器资源

      天翼云电脑(公众版)

      便捷、安全、高效的云电脑服务

      对象存储

      高品质、低成本的云上存储服务

      云硬盘

      为云上计算资源提供持久性块存储

      查看更多

      随机文章

      Python 中迭代器与生成器:深度解析与实用指南

      C++ STL开发温习与总结(二): 2.C++存储技术

      浅谈使用Python脚本爆破CRC32

      文件操作函数(四)—— 文件的结束判定

      AI:普通列表数组转化为one-hot编码的numpy数组矩阵

      初始Python篇(2)——逻辑控制、序列

      • 7*24小时售后
      • 无忧退款
      • 免费备案
      • 专家服务
      售前咨询热线
      400-810-9889转1
      关注天翼云
      • 旗舰店
      • 天翼云APP
      • 天翼云微信公众号
      服务与支持
      • 备案中心
      • 售前咨询
      • 智能客服
      • 自助服务
      • 工单管理
      • 客户公告
      • 涉诈举报
      账户管理
      • 管理中心
      • 订单管理
      • 余额管理
      • 发票管理
      • 充值汇款
      • 续费管理
      快速入口
      • 天翼云旗舰店
      • 文档中心
      • 最新活动
      • 免费试用
      • 信任中心
      • 天翼云学堂
      云网生态
      • 甄选商城
      • 渠道合作
      • 云市场合作
      了解天翼云
      • 关于天翼云
      • 天翼云APP
      • 服务案例
      • 新闻资讯
      • 联系我们
      热门产品
      • 云电脑
      • 弹性云主机
      • 云电脑政企版
      • 天翼云手机
      • 云数据库
      • 对象存储
      • 云硬盘
      • Web应用防火墙
      • 服务器安全卫士
      • CDN加速
      热门推荐
      • 云服务备份
      • 边缘安全加速平台
      • 全站加速
      • 安全加速
      • 云服务器
      • 云主机
      • 智能边缘云
      • 应用编排服务
      • 微服务引擎
      • 共享流量包
      更多推荐
      • web应用防火墙
      • 密钥管理
      • 等保咨询
      • 安全专区
      • 应用运维管理
      • 云日志服务
      • 文档数据库服务
      • 云搜索服务
      • 数据湖探索
      • 数据仓库服务
      友情链接
      • 中国电信集团
      • 189邮箱
      • 天翼企业云盘
      • 天翼云盘
      ©2025 天翼云科技有限公司版权所有 增值电信业务经营许可证A2.B1.B2-20090001
      公司地址:北京市东城区青龙胡同甲1号、3号2幢2层205-32室
      • 用户协议
      • 隐私政策
      • 个人信息保护
      • 法律声明
      备案 京公网安备11010802043424号 京ICP备 2021034386号