当前位置: 首页 > news >正文

资料库网站开发报价网站流量对排名的影响

资料库网站开发报价,网站流量对排名的影响,食品销售公司网站制作,图书馆网站建设情况这篇文章主要介绍了一些在 Python 编程中可能被忽视的核心功能#xff0c;包括默认参数、海象运算符、*args 和 **kwargs 的使用、变量交换、str 与 repr 的区别、可迭代对象的扩展解包、多个上下文管理器的使用、Python 调试器、collections.Counter 的使用、itertools 的使用…这篇文章主要介绍了一些在 Python 编程中可能被忽视的核心功能包括默认参数、海象运算符、*args 和 **kwargs 的使用、变量交换、str 与 repr 的区别、可迭代对象的扩展解包、多个上下文管理器的使用、Python 调试器、collections.Counter 的使用、itertools 的使用以及下划线的两种用法等。 因为这门语言非常容易学许多实践者只是了解了它的基础知识而忽略了深入探讨这门语言更高级和强大的方面这也是它真正独特和强大的地方。 所以让我们简要讨论一下所有你可能还没有听说过的功能但如果你想成为一名真正经验丰富的 Pythonista你肯定想了解。 参数默认值 需要重点注意的是Python 的参数在遇到函数定义时就进行评估。这意味着每次调用 fib_memo 函数下文会提到而没有明确提供 memo 参数的值时它将使用函数定义时创建的相同字典对象。 def fib_memo(n, memo{0:0, 1:1}): n 是你想要返回的序列中的第 n 个数字 if not n in memo: memo[n] fib_memo(n-1) fib_memo(n-2) return memo[n]# 返回一个介于0和100之间包括0和100的数字。 fib_memo(6) # 应该返回8这段代码在 Python 中可以正常运行。这也意味着你可以在一个脚本中多次执行 fib_memo 函数比如在一个 for 循环中每次执行都会增加要计算的 fibonacci 数字而不会达到“超过最大递归深度”的限制因为 memo 会不断扩展。关于这方面的更多信息可以在我的另一篇文章中找到。 海象操作符 海象操作符 (: ) 是在 Python 3.8 中引入的它允许你在表达式中为变量赋值。这样你可以在一个表达式中为变量赋值并检查其值 import random some_value random.randint(0,100) # 返回一个介于0和100之间包括0和100的数字。 if((below_ten : some_value) 10): print(f{below_ten} 小于 10)显然它也可以方便地赋值并检查返回的值是否包含真值 if(result : some_method()): # 如果结果不为假值Falsy print(result)*args 和 **kwargs 通过星号 (* )你可以在传递给函数之前解包参数或关键字参数使用 ** 。 例如考虑以下代码 my_numbers [1,2] def sum_numbers(first_number, second_number): return first_number second_number# 这将返回一个类型错误。 # 类型错误sum 缺少 1 个必需的位置参数“second_number” sum_numbersmy_numbers#这将返回预期的结果3。 sum_numbers(*my_numbers)当我们调用 sum_numbers 函数时如果不解包 my_numbers它会引发一个 TypeError 因为函数期望两个独立的参数。然而通过使用星号 (*)我们可以从 my_numbers 中解包值并将它们作为独立的参数传递从而得到正确的输出。 这种解包技术不仅适用于元组和列表还适用于字典尽管它会将键作为参数传递。那么关键字参数呢对此我们可以利用双星号 (**)。以下代码作为例子 def greet_person(last_name, first_name): print(fHello {first_name} {last_name})data {first_name: John, last_name: Doe} greet_person(**data)除了解包一个序列来将它们作为函数的参数你也可以用它来创建一个新的序列例如 numbers [1, 2, 3, 4, 5] new_list_numbers [*numbers]原始的 numbers 列表保持不变而你有一个 new_list_numbers 变量它包含了相同列表的副本。然而对于包含对象的链接要小心 numbers [[1, 2], [3, 4], [5, 6]] packed_numbers [*numbers]numbers[0].append(10) # 修改原始列表中的嵌套列表print(numbers) # 输出: [[1, 2, 10], [3, 4], [5, 6]] print(packed_numbers) # 输出: [[1, 2, 10], [3, 4], [5, 6]]any 和 all any 和 all 是两个内建函数它们对可迭代对象如列表、元组或集合进行操作并基于可迭代对象中的元素返回一个布尔值。 例如 some_booleans [True, False, False, False]any(some_booleans) # 返回 True all(some_booleans) # 返回 False你可以将 all 和 any 函数与列表推导式结合使用它返回一个可迭代的结果并将其作为参数传递给 all 函数 numbers [5, 10, 3, 8, -2] all_positive all(num 0 for num in numbers)… 或 any 函数 fruits [apple, banana, cherry, durian]# 检查是否所有水果都以“a”开头 result all(fruit.startswith(a) for fruit in fruits) print(result)下面的表格显示了根据可迭代对象中的值返回的输出的不同。 变量交换 你可以组合元组打包在等号 () 右边发生和解包在等号 () 左边发生并利用这个功能进行变量交换 a 10 b 5# 通过打包和解包交换 b 和 a 的值 a, b b, aprint(a) #5 print(b) #10str vs repr 我们习惯于使用 str(some_value) 将某个变量或值转换为字符串以便于进行调试打印。我想让你了解 repr(some_value)。主要的区别是 repr 尝试返回对象的可打印表示而 str 只尝试返回一个字符串表示。 下面是一个更好的例子 import datetimetoday datetime.datetime.now()print(str(today))print(str(today)) # 输出: 2023-07-20 15:30:00.123456 print(repr(today)) # 输出datetime.datetime(2023, 7, 20, 15, 30, 0, 123456)如你所见str() 简单地将 datetime 作为一个字符串表示返回。如果你想确定变量 today 是否包含一个字符串还是一个 datetime 对象你无法单独从这个信息中得到答案。另一方面repr() 提供了有关变量所持有的实际对象的信息。在调试过程中这个信息会更有价值。 扩展的可迭代对象解包 这个可以简单理解如果你想通过一个命令获取序列的第一个和最后一个值 first, *middle, last [1, 2, 3, 4, 5]print(first) # 1 print(middle) # [2, 3, 4] print(last) # 5但这也是可行的 *the_first_three, second_last, last [1, 2, 3, 4, 5]print(the_first_three) # [1, 2, 3] print(second_last) # 4 print(last) # 5或者其他组合。 多个上下文管理器 我们习惯于一次使用一个上下文管理器比如打开一个文件 with open(file.txt, r) as file:# 使用该文件的代码# 该文件将在块结束时自动关闭# 即使发生异常# 示例从文件中读取行for line in file:print(line.strip())with open(file_2.txt, r) as other_file:# 第二个上下文管理器for line in other_file:print(line.strip())但我们可以轻易地在一个语句中打开多个文件。如果你想将一行写入另一个文件这非常简便 with open(file1.txt) as file1, open(file2.txt) as file2:# 同时使用 file1 和 file2 的代码# 文件将在块结束时自动关闭# 即使发生异常# 示例从文件 1 读取行并将其写入文件 2for line in file1:file2.write(line)Python 调试器 我们可以在我们的文件中打印大量的变量进行调试或者我们可以简单地使用 Python 调试器 (pdb)它帮助我们设置断点使得操作更加简单 import pdb# 在你的代码中设置这个断点 pdb.set_trace()使这个功能更有价值的是程序会在你设置的断点处停止你可以打印任何变量来检查其在特定断点处的值或存在情况。试试看当程序触发一个断点时你可以使用以下几个命令 n 或 next执行下一行。 s 或 step步入函数调用。 c 或 continue继续执行直到下一个断点。 l 或 list显示当前的代码上下文。 p 或 pp 打印表达式的值。 b 或 break 在指定的行设置一个新的断点。 h 或 help获取关于 pdb 的使用帮助。 q 或 quit退出调试器并终止程序。 collections.Counter collections 模块中的 Counter 类提供了一种便捷的方式来计算可迭代对象中的元素个数 Countercollectionsfrom collections import Countermy_list [1, 2, 3, 1, 2, 1, 3, 4, 5] counts Counter(my_list) print(counts) # 输出: 计数器({1: 3, 2: 2, 3: 2, 4: 1, 5: 1})使用 Itertools 实现组合 我们可以组合不同的 for 循环来创建排列、组合或笛卡尔积或者我们可以简单地使用内建的 itertools。 Permutations(排列) import itertools# 生成排列 perms itertools.permutations([1, 2, 3], 2) print(list(perms)) # 输出: [(1, 2), (1, 3), (2, 1), (2, 3), (3, 1), (3, 2)]Combinations(组合) import itertools# 生成组合 combs itertools.combinations(ABC, 2) print(list(combs)) # 输出: [(A, B), (A, C), (B, C)]Cartesian product(笛卡尔积) import itertools# 生成笛卡尔积 cartesian itertools.product(AB, [1, 2]) print(list(cartesian)) # 输出: [(A, 1), (A, 2), (B, 1), (B, 2)]下划线的两种用法 下面是在 Python 中使用下划线的两种方式作为大数字的分隔符或作为丢弃变量。 丢弃变量 下划线 _ 可以用作丢弃变量用来丢弃不想要的值 # 忽略函数的第一个返回值 _, result some_function()# 不使用循环变量进行循环 for _ in range(5):do_something()# 你只需要第一个和最后一个 first, *_, last [1, 2, 3, 4, 5]大数字的分隔符 在处理大数字值时你可以使用下划线 (_) 作为视觉分隔符以提高可读性。这个特性在 Python 3.6 中被引入被称为 “下划线字面量”。 population 7_900_000_000 revenue 3_249_576_382.50print(population) # 输出: 7900000000 print(revenue) # 输出: 3249576382.5你知道 Python 中还有哪些容易被忽略的好用功能或技巧欢迎在评论区留言分享。
http://www.hkea.cn/news/14523400/

相关文章:

  • wordpress建站论坛企业开发网站公司
  • 崇州企业网站建设中国企业商铺网
  • 做网站可以赚钱吗知乎seo点评类网站
  • 长春个人做网站哪家好网站建设的设计思路
  • 自建站价格网站友链查询
  • 网站名称能用商标做名称吗信息流广告代运营
  • 莱特币做空国外网站网站栏目模块
  • 哪个网站做投票链接模板好看商城app下载安装
  • 武夷山网站制作什么网站专做外贸
  • 注册功能网站建设惠州做棋牌网站建设有哪些公司
  • 网站seo诊断报告例子网店推广计划书
  • 无锡教育论坛网站建设成都企业网站商城定制
  • 设计参考网站推荐诚信网站平台建设方案
  • 外包做一个网站一般费用微信登录wordpress
  • 做网站还 淘宝python生成网页
  • 国外优秀的字体设计网站wordpress主题自定义
  • 江门自助建站模板大连发现2例阳性
  • 建筑网站的研究背景与意义论坛网站备案流程图
  • 中文网站怎么做英文版深圳市建筑工程交易服务
  • 大连网站建设方法icp对网站内容
  • 一个人可以完成网站建设吗微信推广小程序
  • 做行业网站赚钱吗公司两个网站可以做友情链接吗
  • 如何自己制作一个网站可以制作试卷的app
  • 如何实现输入域名访问网站首页wordpress 免费中文企业主题下载
  • 广州网站制作(信科网络)深圳建站模板
  • 关于建设网站的合作合同范本销售新品牌如何推广
  • 微官网和公众号的区别深圳优化网站排名
  • 公司网站建设代理河北做网站的
  • 南京做网站公司地点工程人才招聘网
  • 陕西省住房和城乡建设部网站官网爱网卡