平安网站建设工作总结,青岛有哪些大型的互联网公司,互联网系统,有内涵的公司名#x1f49d;#x1f49d;#x1f49d;欢迎来到我的博客#xff0c;很高兴能够在这里和您见面#xff01;希望您在这里可以感受到一份轻松愉快的氛围#xff0c;不仅可以获得有趣的内容和知识#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:Linux运维老纪的首页… 欢迎来到我的博客很高兴能够在这里和您见面希望您在这里可以感受到一份轻松愉快的氛围不仅可以获得有趣的内容和知识也可以畅所欲言、分享您的想法和见解。 推荐:Linux运维老纪的首页,持续学习,不断总结,共同进步,活到老学到老 导航剑指大厂系列:全面总结 运维核心技术:系统基础、数据库、网路技术、系统安全、自动化运维、容器技术、监控工具、脚本编程、云服务等。 常用运维工具系列:常用的运维开发工具, zabbix、nagios、docker、k8s、puppet、ansible等 数据库系列:详细总结了常用数据库 mysql、Redis、MongoDB、oracle 技术点,以及工作中遇到的 mysql 问题等 懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作 数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂 非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。 ✨✨ 欢迎订阅本专栏 ✨✨ 开发基础之 Python 函数 技能目标 - 掌握自定义函数 - 理解变量作用域 - 掌握 lambda 函数 - 掌握 Python 内建函数 3.1 函数 函数是一段可以重复使用的代码通过传递的参数返回不同的结果前面章节已经使用 了 Python 定义的函数如 range()、len()、input()等本章讲解用户自定义的函数。 对于重复使用的代码可以编写为自定义函数以便于重复使用代码同时提高开发人员 的开发效率。函数可以分为无参函数和带参函数。 3.1.1 无参函数 Python 的自定义无参函数并不复杂语法格式如下。 语法 def 函数名称(): 代码块 return [表达式] 以关键字 def 开始后面跟函数名、小括号、冒号最后使用 return 退出函数。用表达 式可以传递函数的返回值如果没有返回值则返回 None。 函数是以字母、数字和下划线组成的字符串但是不能以数字开头。 无参函数的调用语法如下。 语法 [变量] 函数名称() 使用赋值运算符“”可以获得函数的返回值使用函数时必须先定义再调用否则程序 会出现错误。 示例 1使用无参函数实现两数相加并输出二者之和。 示例代码如下 def add(): #定义函数 op1 10 op2 20 rt op1op2 print (op1,,op2,,rt) return add() #调用函数 10 20 30 #输出结果 首先定义了无参函数 add()它输出 1020 的结果值return 没有返回值直接使用函 数名 add()进行了调用。 把上面的代码进行修改用 return 返回结果值代码如下 def add(): op1 10 op2 20 rt op1op2 return rt i add() #函数返回值赋值给 i print (结果是:,i) 结果是: 30 #输出结果 函数 add()使用 return 语句可以返回两数相加的结果值变量 i 接收函数 add()返回的值。 Python 在处理返回值时如果没有 return 语句会默认返回 None程序并不会报错。 示例 2输出九九乘法表 示例代码如下 def nineMultiTab(): #函数定义 op1 (1,2,3,4,5,6,7,8,9) op2 (1,2,3,4,5,6,7,8,9) for i in op1: for j in op2: print (i,*, j,,i*j) return nineMultiTab() #函数调用 定义函数 nineMultiTab()用嵌套的 for 循环输出乘法表最后返回空值。示例 2 中 直接通过函数名调用和执行 nineMultiTab()不需要用变量接收。 使用函数时经常会范围一些错误总结如下 函数的定义要先于函数的调用否则会出错。 函数体的代码是一个整体要注意缩进。 定义函数时要使用冒号但调用时不可以使用冒号。 前面讲到函数是一段重复使用的代码它也可以使程序的设计条理更加清晰、结构简单 易懂。下面对上一章使用菜单进行注册和登录的示例进行修改首先是把 N、E 的功能编写 为函数代码如下。 示例 3定义并调用函数实现用户登录功能。 kgc {} def newuser(): #注册新用户函数 prompt1 login desired: while True: name input(prompt1) if name in kgc: prompt1 --name taken,try another: continue else: break pwd input(password:) kgc[name] pwd def olduser(): #登录函数 name input(login:) pwd input(password:) password kgc.get(name) if password pwd: print (--welcome back--,name) else: print (--login incorrect--) 字符 N、E 对应的功能分别使用函数 newuser()和 olduser()实现再就整个程序代码定 义为一个新的函数 showmenu()。在 showmenu()中分别调用这两个函数代码如下 def showmenu(): #定义菜单函数 prompt (N)ew User Login (E)ntering User Login (Q)uit Enter choice: while True: choice input(prompt).strip()[0].lower() print (\n--You picked : [%s] % choice) if choice not in neq: print (--invalid option,try again--) else: if choicen: newuser() #调用函数 newuser() elif choicee: olduser() #调用函数 olduser() else : print (quit) break 此时修改后的代码结构清晰易懂只需要调用菜单函数 showmenu()就可以执行程 序 。整体代码如下 kgc {} def newuser(): #注册 prompt1 login desired: while True: name input(prompt1) if name in kgc: prompt1 --name taken,try another: continue else: break pwd input(password:) kgc[name] pwd def olduser(): #登录 name input(login:) pwd input(password:) password kgc.get(name) if password pwd: print (--welcome back--,name) else: print (--login incorrect--) def showmenu(): #菜单 prompt (N)ew User Login (E)ntering User Login (Q)uit Enter choice: while True: choice input(prompt).strip()[0].lower() print (\n--You picked : [%s] % choice) if choice not in neq: print (--invalid option,try again--) else: if choicen: newuser() elif choicee: olduser() else : print (quit) break if __name__ __main__: # 程序入口 showmenu() 代码的最后使用“if __name__ __main__ :”作为一个判断决定是否要执行函数 showmenu()这和直接使用 showmenu()有什么不同呢当直接执行这段代码时Python 的内置变量__name__的值是”__main__”。如果是其它函数引用到这段代码__name__的 值就会不同也就是 showmenu()不会被执行后面的章节会再介绍它的用法。 3.1.2 带参函数 Python 带参函数的语法格式如下。 语法 def 函数名称形式参数列表: 代码块 return [表达式] 通过语法可以看出带参函数与无参函数的区别是在函数名称后面的小括号中有形式参 数列表简称形参列表。注意形式参数列表实际上只是占位符用于体现参数的个数每 个参数都没有提供具体的数值。 带参函数的调用语法如下。 语法 [变量] 函数名称(实际参数列表) 调用带参函数时需要为每个参数传递对应的实际数值又称实参列表。示例 4 是完 成加法运算的函数代码。 示例 4定义并调用带参函数完成两数相加的运算。 def add(x,y): #带参函数定义 return x y print (add(1,2)) #带参函数调用 3 #结果 示例 4 中定义的函数 add()有 2 个形式参数 x 和 y。在函数的语句块中形式参数 x 和 y 的用法与变量很相似的。通过函数名 add()传入实际参数的值 1 和 2 进行调用执行执 行后函数的返回值是 3。 上面定义的形式参数是普通的参数又称为位置参数。当调用函数时根据传递的实 际参数值出现位置与函数定义的形式参数列表进行匹配。 示例 5使用位置参数方式或关键字参数方式调用带参函数。 示例代码如下 def aa(x,y): print (x,y) aa(10,6) aa(6,10) 10 6 #结果 6 10 #结果 在函数 aa(x,y)中输出 x 和 y 值x 在前面y 在后面。调用 aa(10,6)时x 的值是 10 y 的值是 6。调用 aa(6,10)时x 的值是 6y 的值是 10。所以两次调用函数 aa()得到的 输出结果是不同的。 当程序代码比较繁琐时参数的顺序很难记住可以使用关键字参数。关键字参数是在 调用函数时明确指定参数值赋给指定的形参语法格式如下。 语法 函数名称形参 1实参 1形参 2实参 2… 示例代码如下 def aa(x,y): print (x,y) aa(x10,y6) aa(y6,x10) 10 6 #结果 10 6 #结果 代码中aa(x10,y6)和 aa(y6,x10)语句在调用函数 aa(x,y)的同时指定了参数的 名称和对应值(x10,y6)和(y6,x10)。这两个语句明确指定了实参和形参的对应关系与 参数所在的位置无关所以输出结果是相同的。 调用带参函数时传入函数的参数个数必须和声明的参数个数一致。当函数包含有多个 参数时一旦实参个数与形参个数不符就可能出错。为了避免这样的错误发生Python 在函数定义时允许为形式参数指定默认值从而在调用参数时可以少写参数省略的参数用 默认值为其赋值。 下面是使用参数默认值的代码示例 def aa(x,y6): print (x,y) aa(10) aa(x10) aa(10,5) aa(x10,y5) 10 6 #结果 10 6 #结果 10 5 #结果 10 5 #结果 函数定义时参数 y 的默认值是 6。函数调用时可以不传递 y 的值只传递 x 的值。 直接传值或使用参数名并赋值的方式都可以aa(10)和 aa(x10)的结果是相同的。当传递 y 的值是 5 时此时 y 的默认值不起作用所以 aa(10,5)和 aa(x10,y5)输出时 y 的值都是 5。 定义参数默认值时要注意位置参数必须出现在有默认值参数之前。下面的函数定义 是错误的。 def aa(x1,y): print (x,y) 上面的代码中位置参数 y 出现在有默认值的参数 x1 的后面此时会产生语法错 误。 下面通过示例 6 加深对带参函数的理解。 示例 6编码实现计算器功能 要求用户输入两个数字和运算符程序根据用户指定的运算符执行加、减、乘、除运 算。为了使程序结构清晰需要编写 2 个函数一个是用来处理加减乘除运算一个是用 来处理字符串和数值转换。实现步骤如下 1定义处理运算的函数 operator(op1,op2,opFu)示例代码如下 def operator(op1,op2,opFu): 1 if opFu not in -*/: return -1 2 if opFu : result op1op2 elif opFu -: result op1-op2 elif opFu *: result op1*op2 elif opFu /: 3 if op2 0: print (错误除数不能为 0 /n) result None else: result op1 / op2 return result 函数 operator(op1,op2,opFu)中参数 op1 表示运算符前面的操作数op2 表示运算 符后面的操作数opFu 表示运算符。在代码的位置 1 处判断 opFu 是不是“-*/”运算符中 的一个。如果不是返回值是-1表示程序出错。位置 2 处判断 opFu 如果是“”则进行 加法运算否则向下依次判断 opFu 是否是“-“、 “*“或 “/“这些运算的处理方式与“”相同。 注意在位置 3 处当进行除法运算时如果除数是 0 时在数学上是没有意义的。需要 使用 if 语句判断 op2 的值是否等于 0。如果等于 0需要做特殊的处理返回的结果是 None 表示程序错误。在函数的最后通过 return 语句返回运算结果。 2用户由键盘输入的是字符串类型而程序是计算数值的运算需要将字符串转为
数值型所以定义函数 convert(op)给予实现示例代码如下 def convert(op): 1 flag True 2 for ch in op: if ch not in 1234567890: flag False break 3 if flag True: return int(op) 4 else: return None 位置 1 处定义了一个布尔型变量 flag用于判断数值的有效性。位置 2 处对传入的字 符串类型的参数 op使用 for 循环判断它的每一个字符是否在“1234567890”中。如果有一 个字符不在其中就说明这个字符串不能转换为数值flag 的值为 False退出循环否则 flag 的值不变还是 True说明字符串可以转换为数值型。位置 3 作了相应的判断把参 数 op 转换为了整型使用的是 int()函数。位置 4 表示如果参数 op 不能转为整型返回的 是 None。
3定义了上面的 2 个函数后开始编写程序的主体代码了。按数学运算的正常顺序
编写程序由键盘输入第 1 个数值然后输入运算符最后再输入第 2 个数值计算输出
结果。示例代码如下 if __name__ __main__: 1 str1 请输入第 1 个数\n strFu 请输入一个算术运算符\n str2 请输入第 2 个数\n 2 while True: print (需要退出程序请输入字母 q) 3 opp1 input(str1) ch opp1.strip()[0].lower() if ch q: break 4 op1 convert(opp1) #数值 1 if op1 None: print (输入错误请输入整数!/n) continue 5 while True: opFu input(strFu) #运算符 if opFu in -*/: break else: print (运算符输入错误) continue 6 while True: op2 convert(input(str2)) #数值 2 if op2 None: print (输入错误请输入整数!\n) continue else: break 7 result operator(op1,op2,opFu) if result ! None: print (计算%d %s %d %d\n %(op1,opFu,op2,result)) print (程序退出了) 位置 1 定义了键盘输入 3 个字符串的提示文字。位置 2 是主体代码的无限循环操作 可以进行多次计算操作。位置 3 是接受键盘输入使用 if 语句判断如果输入字符是”q”时 退出位置 2 的循环结束程序的运行。位置 4 对输入的第一个字符串进行数据类型转换操 作如果 convert()返回是 None 说明不能进行数据类型的转换使用 continue 语句开始下 一次循环即重新输入数据。位置 5 是循环接受键盘输入的运算符如果是“-*/”中的某一 个运算符则使用 break 语句结束位置 5 的循环执行位置 6 的代码如果不是“-*/”中 的运算符则执行 continue 语句重新执行位置 5 的下一次循环再次接收键盘输入的运 算符。位置 6 是输入第 2 个数值同样需要做数据类型的转换操作如果不能转换就需要 重新键盘输入。位置 7 是调用运算函数 operator()执行运算如果 result 不等于 None说 明运算是正常的显示出运行的结果。 最终的示例 6 程序运行结果如下 需要退出程序请输入字母 q 请输入第 1 个数 11 请输入一个算术运算符 * 请输入第 2 个数 2 计算 11 * 2 22 需要退出程序请输入字母 q 请输入第 1 个数 q 程序退出了 输入第 1 个数是 11运算符为*第 2 个数是 2程序的运行结果是输出 22。输入字符 “q”时程序退出。程序运行中如果输入错误的数据程序会提示相应的错误信息读者 可以自己动手进行尝试。 3.2 变量作用域 作用域是指变量在程序中的应用范围而变量声明的位置决定它的作用域。Python 按 作用域区分有局部变量和全局变量。 全局变量是指在一个模块中最高级别的变量有全局作用域除非被删除否则存活到程 序运行结束所有函数都能访问全局变量。 局部变量是指定义在函数内的变量有局部作用域依赖于定义变量的函数现阶段是否处 于活动状态。调用函数时局部变量产生暂时存在。一旦函数执行完局部变量将会被释 放。 局部变量的作用域仅限于定义它的函数全局变量的作用域在整个模块内部都是可见 的。在同一个函数中不允许有同名局部变量。在不同的函数中可以有同名局部变量。在 同一个程序中全局变量和局部变量同名时局部变量具有更高的优先级。 下面通过代码演示局部变量和全局变量的使用情况。 示例 7使用函数实现年龄的输出。 def addAge(age): age 1 #局部变量 age print (addAge(): _age%d age%d %(_age,age)) #访问全局变量_age 和局部变量 age return age _age int(input(输入年龄: \n)) #全局变量_age rt addAge(_age) print (main(): _age %d %_age) print (main(): rt%d %rt) //结果 输入年龄: 11 addAge(): _age11 age12 main(): _age 11 main(): rt12 在函数 addAge(age)中定义了局部变量 age在全局范围定义了全局变量_age。_age 的值是由键盘输入程序运行中可被访问直至程序结束所以在 addAge(age)函数的代 码中也可以访问对它。当键盘输入是 11 时_age 的值是 11调用”rtaddAge(_age)”把 全局变量_age 的值 11 传给了函数此时 addAgeage)的局部变量 age 的值也是 11。执 行“age1”后age 值变为 12而全局变量_age 的值不发生变化函数的返回值 age 的值 是 12函数返回值通过“”被变量 rt 接收所以打印“_age11 rt12“。 在 Python 中尽量不使用全局变量因为程序的任意代码都可以自由地访问和修改全局 变量的值非常容易出现数据被意外修改的错误而这种错误很难被发现。 局部变量只有在局部中才能使用其他范围是访问不到的如 age 是局部变量在全 局范围就引用不到,比如在程序最后加上代码 //省略内容 print main(): age%d %age //结果 Traceback (most recent call last): File D:\pythonTest\7\7-5.py, line 10, in module print main(): age%d %age NameError: name age is not defined 从程序执行的结果可以看到输出信息是“name age is not defined”说明在全局范围 内访问不到变量 age。这个问题可以使用 global 关键字解决global 的作用是声明变量为全 局变量即使变量定义在函数内部加上 global 后也可以在全局范围访问。 示例代码如下 def addAge(num): global age age num1 print (addAge(): _age%d age%d %(_age,age)) return age _age int(input(输入年龄: \n)) rt addAge(_age) print (main(): _age %d %_age) print (main(): rt%d %rt) print (main(): age%d %age) //结果 输入年龄: 11 addAge(): _age11 age12 main(): _age 11 main(): rt12 main(): age12 对程序做了一些调整在 addAge()代码中使用关键字 global 定义变量 age。这样在 程序的任意位置都可以使用使用全局变量 age。 注意在函数中使用关键字 global 声明的全局变量名不能与其中的局部变量重名。 凡事都有两面性使用关键字 global 定义的全局变量可以在程序的任意位置被修改数值 所以要尽量避免在函数中使用 global 定义全局变量减少程序的不可预知性。 3.3 lambda 函数 lambda 函数的作用是创建匿名函数是一种声明函数的特殊方式。 lambda 函数的语法。 语法 lambda params:expr 其中 params 相当于函数接收的参数列表expr 是函数返回值的表达式。 示例 8编写一个普通函数和一个 lambda 函数。 示例代码如下 def sum1(x,y): #普通函数 return xy sum2 lambda x,y : xy #lambda 函数 print (sum1(3,4)) #调用执行普通函数 print (sum2(3,4)) #调用执行 lambda 函数 //结果 7 7 实现的是相同的功能但 lambda 函数更加简洁只需一条语句实现所以 lambda 也 称为 lambda 表达式。使用 lambda 只能是表达式不能包含 if、for 等条件循环语句。对于 不需要复用、简单的匿名函数使用 lambda 能起到很好的效果。 3.4 内建函数 Python 除了本身的语法结构还提供了常用的内建函数。内建函数是程序员经常使用到的方法可以提高程序的编写效率。如 float()就是内建的函数。内建函数是自动加载的 Python 的解释器可以识别。它不需要导入模块不必做任何的操作不需要引用就可以调 用 。下面开始介绍常用的内建函数。 1. abs()函数 abs()函数能够返回一个数字的绝对值即正数。语法格式如下。 语法 absx 参数 x 可以是正数也可以是负数示例 9 代码如下 abs(10) 10 abs(-10) 10 bb -3 abs(bb) 3 参数是 10 或-10返回的是绝对值结果都是 10. 2. bool()函数 bool()函数返回值是 True 或 False它是 Boolean布尔值的简写语法格式如下。 语法 bool( [ x ] ) 将参数 x 转换为 Boolean 类型当参数是数字时0 返回 False其他任何值都返回 True。 参数是字符串时None 或空字符串返回 False否则返回 True。参数是空的列表、元组或 字典返回 False否则返回 True。 示例 10 代码如下 bool() #无参时返回 False False bool(0) False bool(-3) True bool(None) False bool() False bool(xyz) True bool([11,22]) True 3. float()函数 float()函数用于转换数据为 float 类型语法格式如下。 语法 float[ x ] 参数 x 可以是字符串或数字示例 11 代码如下 float(25) 25.0 float(3) 3.0 float(999.586103) 999.586103 float(999.586103) 999.586103 字符串和数字都可以转为 float 类型。如果不能转换就会抛出异常。 4. int() int()函数可以将数据转换为整数语法结构如下。 语法 int [ x [base]] 第一个参数 x 是浮点数时小数后面的数据将会丢失。 第二个参数是进制默认为十进制。 如果参数是含有浮点数的字符串将会产生语法错误。示例 12 代码如下 int(199.99) #浮点数 199 int(100) #字符串 100 int(99.9) #字符串 Traceback (most recent call last): File stdin, line 1, in module ValueError: invalid literal for int() with base 10: 99.9 注意当参数是字符串时字符串中只能是整数格式。如果是浮点格式将有异常产生。 5. range() range()函数可以生成一个迭代对象语法结构如下。 语法 range[start],stop[,step] 第一个参数 start 表示起始值是可选参数默认值是 0。 第二个参数 stop 表示终止值。 第三个参数表示步长是可选参数可以是正数或负数默认值是 1。 从给定的第一个参数开始到比第二个参数值小 1 的数字结束常与 for 循环一起使用 循环执行指定数字的次数。示例 13 代码如下 range(0,5) range(0,5) list(range(0,5)) [0, 1, 2, 3, 4] range(0,30,3) range(0,30,3) list(range(30,0,-3)) [30, 27, 24, 21, 18, 15, 12, 9, 6, 3] for i in range(0,5): print (i) 0 1 2 3 4 6. sum()函数
sum()函数可以对列表中元素求和语法结构如下。 语法 sumx[ start] 第一个参数 x 是迭代器。 第二个参数是步长是可选参数默认值是 1。 示例 14 代码如下 num list(range(0,500,50)) num [0, 50, 100, 150, 200, 250, 300, 350, 400, 450] print ((sum(num))) 2250使用 range()生成了一个列表然后使用 sum()对列表中的数值进行累加求和。 7. max()函数 max()函数可以返回列表、元组或字符串中最大的元素语法结构如下。 语法 maxx 如果元素是英文字母那么字母是“大于”数字的而小写字母“大于”大写字母示例 15 代码如下 num [6,2,12,7,65] max(num) 65 string d,u,a,n,g,D,U,A,N,G max(string) u max(1000,650,98,2678,9) 2678 8. min()函数 min()函数返回列表、元组、或字符串中最小的元素语法结构如下。 语法 minx 与 max()的使用方式相反它取的是最小值示例 16 代码如下 min([6,2,12,7,65]) 2 9. dir()函数 dir()函数是 directory 的简写可以返回关于任何值的相关信息它可以用于任何对象 包括字符串、数字、函数、模块、对象和类。当想要快速查找帮助信息时非常有用。语法格 式如下。 语法 dir( [ object ] ) object 是可选参数无参时返回当前范围内的变量、方法、和定义的类型列表。带参时 返回参数的属性、方法列表。如果参数包含方法__dir__()该方法将被调用。如果参数不包含 __dir__()该方法将最大限度地收集参数信息。示例 17 代码如下 dir() #获得当前模块的属性列表 [__annotations__, __builtins__, __doc__, __loader__, __name__, __package__, __spec__, _age, addAge, age, bb, ch, convert, i, num, op1, op2, opFu, operator, opp1, result, rt, str1, str2, strFu, string, sum1, sum2] dir([]) #查看列表的方法 [__add__, __class__, __contains__, __delattr__, __delitem__, __dir__, __doc__, __eq__, __format__, __ge__, __getattribute__, __getitem__, __gt__, __hash__, __iadd__, __imul__, __init__, __init_subclass__, __iter__, __le__, __len__, __lt__, __mul__, __ne__, __new__, __reduce__, __reduce_ex__, __repr__, __reversed__, __rmul__, __setattr__, __setitem__, __sizeof__, __str__, __subclasshook__, append, clear, copy, count, extend, index, insert, pop, remove, reverse, sort] 10. eval()函数 eval()函数是 evaluate 的简写可以计算表达式的值。语法格式如下。 语法 evalexpression [globals [locals]] 第一个参数 expression 只能是简单的表达式。一般情况下对拆分成多行的表达式不 能运算常用于把用户输入转换成 Python 表达式。示例 18 代码如下 eval(100*9) 900 eval(input(请输入表达式)) 请输入表达式89*2-3 23 eval()函数把字符串“100*9”解析成为了一个表达式进行相应的计算获得结果。 11. exec()函数 exec()函数可以运行较复杂的程序与 eval()函数功能相近。二者的区别是 exec()没有 返回值eval()有一个返回值。语法格式如下。 语法 exec( object [ , globals [,locals]]) 参数 object 只能是简单的表达式一般对拆分成多行的表达式不能运算常用于将用 户输入转换成 Python 表达式。示例 19 代码如下 exec(print(Hello World)) #单行语句字符串 Hello World program print(WoW) #输出内容的多行字符串 print(duang) exec(program) WoW duang 定义单行、多行字符串或输出内容的打印字符串都可以由 exec()函数执行它与直接 执行 Python 的语句作用是相同的。 12. len()函数 len()函数返回一个对象的长度语法格式如下。 语法 lens 参数 s 是一个序列或字符串。示例 20 代码如下 len(duang) #字符串 5 language [python,java,c#,vb] #列表 len(language) 4 person {张三:100,李四:99,王五:88} #字典 len(person) 3 对于字符串len()是返回字符串的字符个数元组、列表和字典返回的是元素的个数。