“抄”代码,再也不用上谷歌复制粘贴了!

java实现复制粘贴功能代码,附源代码 程序员用AI来写AI代码,"卷死"其他程序员?很难把AI模型训练出来的代码简单的理解为复制粘贴。然而已有不少人否定了这个说法,在通过Copilot解决程序中的一些经典问题时,会发现Co 清晰的描述出目标函数想要实现的功能并不简单,同时在使用Copilot的过程中,需要不断去回顾检查AI生成的代码是否正确,这反而容易干扰到编。 "木马源"代码漏洞被披露 企业急需评估供应链安全Java、Rust、Go,以及Python的有效性,并怀疑它同样会对大多数其他语言造成同样的致命打击。为了给漏洞修复腾出时间,安全 阅读详情

点击上方“编程派”,选择设为“设为星标”

优质文章,第一时间送达!

先问大家一个问题,如果你撸代码的过程中遇到了一个问题不知道怎么解决,你一般会怎么办?

那当然是搜了,去哪里搜呢?

比如这里我就想知道 Python 里面怎么使用 requests 怎么上传文件,我可能就直接 Google 一下,结果有很多,比如官方文档,Stack Overflow 等等,然后一个个去查。

比如我可能就会输入关键词 python requests upload file ,查到的结果类似如下:

这里给我的第一个结果是 Stack Overflow,结果链接为 https://stackoverflow.com/questions/22567306/python-requests-file-upload,我把它点开,然后找到最高票的答案。

这里最高票的答案如图琐事,然后把它的代码 copy 下来试试看看,然后就跑通了。

不过似乎还是有一点麻烦的?开浏览器,开 Google 或 Stack Overflow,找最高票答案试试。

介绍

今天给大家介绍一个神器,叫做 howdoi,有了它,似乎我们就可以告别 Stack Overflow 了。

下面我们就先来看看 howdoi 能做点什么,安装了之后,我们就能直接输入这样的命令,比如:

howdoi python requests upload file

它给我的返回结果就是这样:

files = {'upload_file': open('file.txt','rb')}
values = {'DB': 'photcat', 'OUT': 'csv', 'SHORT': 'short'}


r = requests.post(url, files=files, data=values)

比如我想搜 python 怎么发送 POST 请求,输入这样的命令:

howdoi python requests post

返回结果就是这样:

>>> import requests
>>> r = requests.post('http://httpbin.org/post', json={"key": "value"})
>>> r.status_code
200
>>> r.json()
{'args': {},
 'data': '{"key": "value"}',
 'files': {},
 'form': {},
 'headers': {'Accept': '*/*',
             'Accept-Encoding': 'gzip, deflate',
             'Connection': 'close',
             'Content-Length': '16',
             'Content-Type': 'application/json',
             'Host': 'httpbin.org',
             'User-Agent': 'python-requests/2.4.3 CPython/3.4.0',
             'X-Request-Id': 'xx-xx-xx'},
 'json': {'key': 'value'},
 'origin': 'x.x.x.x',
 'url': 'http://httpbin.org/post'}

看起来还不错对不对。

比如我想搜 Python 里面怎么把 timestamp 转 datetime,输入这样的命令:

howdoi python timestamp to datetime

返回结果就是这样:

from datetime import datetime
ts = int("1284101485")


# if you encounter a "year is out of range" error the timestamp
# may be in milliseconds, try `ts /= 1000` in that case
print(datetime.utcfromtimestamp(ts).strftime('%Y-%m-%d %H:%M:%S'))

那 Java 它会吗?试试看:

howdoi java timestamp to datetime

返回结果就是这样:

Timestamp stamp = new Timestamp(System.currentTimeMillis());
Date date = new Date(stamp.getTime());
System.out.println(date);

有点牛逼啊,搜啥答案都有,准确率还蛮高。

以上是怎么实现的?没错,就是借助于 howdoi 这个项目。

howdoi

那么这个 howdoi 究竟是个什么?我们 GitHub 上就能找到,链接地址为:https://github.com/gleitz/howdoi。

看下简介:

Are you a hack programmer? Do you find yourself constantly Googling for how to do basic programming tasks?

Suppose you want to know how to format a date in bash. Why open your browser and read through blogs (risking major distraction) when you can simply stay in the console and ask howdoi.

意思就是说,如果你想搜一些编程相关的解决方案,我们可以不用再去开浏览器,然后再去读文档或者博客,你可以通过 howdoi 就能直接得到答案。

操作就是上面我们讲的。

howdoi 是一个 Python 项目,我们可以 pip 命令安装:

pip3 install howdoi

如果是 Mac 的话,推荐使用 brew 来安装:

brew install howdoi

安装完了就能使用 howdoi 命令了。

完整用法如下:

usage: howdoi.py [-h] [-p POS] [-a] [-l] [-c] [-j] [-n NUM_ANSWERS] [-C] [-v] [-e ENGINE] QUERY [QUERY ...]


instant coding answers via the command line


positional arguments:
  QUERY                 the question to answer


optional arguments:
  -h, --help            show this help message and exit
  -p POS, --pos POS     select answer in specified position (default: 1)
  -a, --all             display the full text of the answer
  -l, --link            display only the answer link
  -c, --color           enable colorized output
  -j, --json-output     return answers in raw json format, to pretty print try 'howdoi pretty print json command line'
  -n NUM_ANSWERS, --num-answers NUM_ANSWERS
                        number of answers to return
  -C, --clear-cache     clear the cache
  -v, --version         displays the current version of howdoi
  -e ENGINE, --engine ENGINE  change search engine for this query only. Currently supported engines: google (default), bing, duckduckgo.

但一般来说就按照前文所演示的直接输入问题就行了。

比如看看怎样在 Python 中打印 traceback,这么搜:

howdoi print stack trace python

结果如下:

import traceback


try:
    raise TypeError("Oups!")
except Exception, err:
    try:
        raise TypeError("Again !?!")
    except:
        pass


    traceback.print_exc()

不错不错。

原理

这时候大家可能就有疑问了,这到底是怎么实现的?为什么还能这么精准。

其实看下源码就知道了,我们稍微扒下看看,其实源码就都在这里了:https://github.com/gleitz/howdoi/blob/master/howdoi/howdoi.py。

先看看一上来定义了这么多:

SUPPORTED_SEARCH_ENGINES = ('google', 'bing', 'duckduckgo')


URL = os.getenv('HOWDOI_URL') or 'stackoverflow.com'


USER_AGENTS = ('Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:11.0) Gecko/20100101 Firefox/11.0',
               'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:22.0) Gecko/20100 101 Firefox/22.0',
               'Mozilla/5.0 (Windows NT 6.1; rv:11.0) Gecko/20100101 Firefox/11.0',
               ('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/536.5 (KHTML, like Gecko) '
                'Chrome/19.0.1084.46 Safari/536.5'),
               ('Mozilla/5.0 (Windows; Windows NT 6.1) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.46'
                'Safari/536.5'), )
SEARCH_URLS = {
    'bing': SCHEME + 'www.bing.com/search?q=site:{0}%20{1}&hl=en',
    'google': SCHEME + 'www.google.com/search?q=site:{0}%20{1}&hl=en',
    'duckduckgo': SCHEME + 'duckduckgo.com/?q=site:{0}%20{1}&t=hj&ia=web'
}

貌似我们就懂了什么,这些答案是从搜索引擎得来的。

然后我们再扒一扒,又看到一个关键的 _get_result 方法,定义如下:

def _get_result(url):
    try:
        return howdoi_session.get(url, headers={'User-Agent': _random_choice(USER_AGENTS)},
                                  proxies=get_proxies(),
                                  verify=VERIFY_SSL_CERTIFICATE).text
    except requests.exceptions.SSLError as e:
        _print_err('Encountered an SSL Error. Try using HTTP instead of '
                   'HTTPS by setting the environment variable "HOWDOI_DISABLE_SSL".\n')
        raise e

看到了吧,这里就是一次 requests 发起了 get 请求,那么这个 url 究竟是怎么来的呢?我们再顺着找下调用 _get_result 方法的地方:

def _get_links(query):
    search_engine = os.getenv('HOWDOI_SEARCH_ENGINE', 'google')
    search_url = _get_search_url(search_engine)


    result = _get_result(search_url.format(URL, url_quote(query)))
    if _is_blocked(result):
        _print_err('Unable to find an answer because the search engine temporarily blocked the request. Please wait a few minutes or select a different search engine.')
        raise BlockError("Temporary block by search engine")


    html = pq(result)
    return _extract_links(html, search_engine)

这里就是 _get_links 方法调用了 _get_result 方法,就是 search_url 的格式化结果,传入了 URL 还有 query,其中 search_url 是 _get_search_url 方法传入了 search_engine,search_engine 是通过环境变量 HOWDOI_SEARCH_ENGINE 获取的,默认是 google。

好,那顺着再看看 _get_search_url 的实现,定义如下:

def _get_search_url(search_engine):
    return SEARCH_URLS.get(search_engine, SEARCH_URLS['google'])

很明显了,就是 SEARCH_URLS 里面定义的,所以最后,我们就可以得到如下的搜索 URL:

www.google.com/search?q=site:stackoverflow.com%20{query}&hl=en

这里 query 就是我们搜索的内容,比如搜索 print stack trace python,构造的 URL 就是:

https://www.google.com/search?q=site:stackoverflow.com%20print%20stack%20trace%20python&hl=en

我们访问一下就是这样的结果:

其实这就是借助 Google 搜索了 Stack Overflow 的内容,搜索了 python 关键字的内容。

然后 howdoi 就是提取了其中的 TOP 答案,然后解析一下返回即可。

彩蛋

既然 howdoi 这么吊,我们来问它一个困扰大家多年的问题吧:

howdoi how to find girlfriend

回答:

Sorry, couldn't find any help with that topic

什么?这都不会!摔!

来源:崔庆才 | 静觅

回复下方「关键词」,获取优质资源

回复关键词「 pybook03」,立即获取主页君与小伙伴一起翻译的《Think Python 2e》电子版

回复关键词「入门资料」,立即获取主页君整理的 10 本 Python 入门书的电子版

回复关键词「m」,立即获取Python精选优质文章合集

回复关键词「book 数字」,将数字替换成 0 及以上数字,有惊喜好礼哦~

题图:pexels,CC0 授权。

谷歌的新代码超过25%来自AI,程序员这下该紧张了 可是要知道就在一年前,AI编程刚刚问世时,无论国内的知乎、还是海外的Reddit,网络社区中的主流声音都是Github Copilot等AI编程工具不可能冲击程序员的地位,并认为所谓的“程序员要被AI取代”是无稽之谈,在李彦宏与周鸿祎就此“论战”时,支持“红衣教主”的声音也呈现出了压倒性优势。事实上,AI编程工具并非完全取代程序员的生态位,而是将他们从繁琐编写代码的工作中解放出来,使得他们能够专注于更具创造性的工作,例如设计更高效的算法、解决复杂的技术问题、开发新的产品。 阅读详情

相关推荐

解决网页不允许复制粘贴

博主可算是考完了,经历过上机考试的我觉得有必要发一期如何解决网页不能复制粘贴问题的博客(万恶的xxt不让我复制粘贴) 下面以谷歌和火狐浏览器为例 现在我们先用火狐浏览器随便搜一篇文章 这一看就是好文章hhh,于是我尝试复制粘贴到文本,果然按照百度文库的尿性怎么可能让人随随便便就粘贴… 禁用JS解决不可复制粘贴: 这时候因为使用的是火狐浏览器,于是可以在地址栏输入 about:config 进入高级首选项 在搜索栏输入javascript,找到javascript enabled,并将状态改为fals.

weixin_49870878的博客 5338

C 语言 - 代码精简手册:献给每一个写完自己都看不懂的人

C 语言是一门既灵活又危险的语言。它允许你写出极其精简但也极其晦涩的代码。有些老程序员偏爱这种写法,看起来像神,维护起来像鬼。下面是一些常见的 C 语言浓缩语句,以及它们拆解后的正常人类能看懂的版本。

欢迎来到Petter_Deng的博客 1178

谷歌浏览器无限多开教程

Google浏览器批量多开教程

良匠的博客 3697

网页复制粘贴助手,Chrome网页复制插件(谷歌浏览器复制插件)

是一款在Chrome浏览器中使用的网页复制的辅助工具,软件功能强大,操作简单,使用后可以帮助用户轻松便捷的复制网页,非常方便实用,插件能够轻松搞定那些不能够被复制的网页,它可以无视那些网页的禁止复制限制,从而帮助用户轻松复制网页中的内容到本地!当我们浏览网页的时候,看到感兴趣的内容就特别想把它复制下来。但经常是有的网站复制要强制登录,有的复制需要付费,甚至有的网站都没有复制这一选项。一款解决网页限制复制问题的插件,当你遇到限制复制粘贴和右键的网页是不是很头痛?安装这个插件后,点下插件按钮就能解决了。

Json的知识梦工厂 5678

Windows10检查Cuda和cuDNN是否安装成功?

简介:根据上篇博客已经完成了CUDA和cuDNN的安装步骤,完成对其的安装。下面将来检查它们是否安装成功。 1 .首先win+R进入CMD,在命令行输入nvcc -V,如下图所示,则表示cuda已经安装成功。 2 .进入到cuda的安装路径,C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\extras\demo_suite,找到如下两个.exe文件: 首先执行:deviceQuery.exe,查看是否出现如下界面: 然后执行bandwid

jhsignal的博客 14万+

单相全桥逆变三种SPWM调制方式(单极/双极/倍频)到底怎么选?一篇讲透优缺点与选型

本文深入解析单相全桥逆变器中单极性、双极性和单极性倍频三种SPWM调制方式的原理与工程选型策略。通过对比开关损耗、谐波特性和驱动复杂度等关键指标,提供基于STM32的实战方案和选型框架,帮助工程师在新能源发电、电机驱动等应用中做出最优决策。

weixin_34046298的博客 807

谷歌浏览器解决控制台不能复制粘贴的问题

进入控制台,点击控制台的设置。找到设如图选项,取消勾选即可。

Sb1784591708的博客 1万+

Amesim管路仿真进阶:如何用阻力管实现不规则管路的高精度模拟

本文深入探讨了在Amesim仿真中,如何利用阻力管(Orifice with Table)元件,特别是TFORT0子模型,实现对不规则管路的高精度模拟。通过直接输入基于测试或CFD的流量-压降数据,该方法能有效弥补标准管路模型在复杂流道、内部结构复杂等场景下的不足,为液压、热管理等系统仿真提供精准可靠的部件模型。

cicd6pipeline的博客 671

Mac上 印象笔记中markdown 拷贝到Typora不能识别 的解决方案

直接cmd+v粘贴到Typora会不能识别。 原来是直接粘贴的话,会粘贴印象笔记的富文本格式。 因此,只需粘贴无格式文本即可,对应快捷键:Shift+command+ V。

TypicalSpider的博客 986

Trae 在代码审查场景的 3 大差异化能力:对比 Claude Code、Cursor 与 Codex 实测

揭示代码审查的核心矛盾是上下文断层而非找 Bug,介绍 Trae 通过跨文件符号追踪、意图-实现对齐校验、增量变更影响图谱生成三件事实现上下文校准,并对比其与 Claude Code、Cursor、Codex 在多模块 Java 项目中的实际审查差异

weixin_42525482的博客 152

Zephyr内核——内存管理——内存堆

Zephyr提供了一组允许线程动态分配内存。

wayne2018的博客-心情驿站 772

编程大佬代码都能记住?不用百度就能啪啪啪打出来么?

有一位同学问:“我从大一接触编程到现在一直在练习代码,但是很多函数和库还是没有办法记住,要用到还是得查百度,不知道是我太菜了,还是大家都一样呢?” 很多初学编程的朋友,可能都会有这个问题,想象着编程大佬们都是像 “骇客帝国” 那样,手速如飞,啪啪啪地让屏幕下起代码雨。不怕大家笑话,我接触编程以前,的确以为自己今后也能这样,潇洒如风,常伴我身。 但后来,在学习和工作中,我认识了不少的大佬,他们无一例外都有一个共同的特点,不会去记代码!而且据我长期的暗中观察,大部分编程经验丰富的大佬也并不能在写代码时啪啪啪

努力做最接地气的编程干货分享,感谢关注 2806

【LDPC-7】LLR量化位宽对LDPC译码性能的影响分析——以最小和译码算法为例进行matlab仿真

最小和译码算法的步骤如下:最后译码结果如果满足或者完成所有迭代次数,则译码算法停止迭代,否则继续进行译码迭代操作。

FPGA/MATLAB学习教程/源码/项目合作开发 1471

谷歌浏览器好用的复制粘贴插件_Chrome粘贴插件:将其粘贴

将其粘贴的开发背景用户在使用电脑的过程中总是会遇到重复的内容,而快速操作这些内容的方式莫过于复制和粘贴了,但是对于常见的文本式的复制粘贴功能的时候会看不到需要粘贴的内容,在粘贴的时候会把一些自己不需要的内容粘贴到不应该粘贴的位置,这不仅容易出错,而且严重影响了用户的工作或学习的效率。用户有时候在网页中遇到一段文本想要拷贝到富文本编辑器中的时候,会把HTML的元素一起粘贴进去,用户还需要进行额外的处...

weixin_39947306的博客 8092

反应动力学仿真软件:Kintecus_(4).用户界面及操作指南

在 Kintecus 中,反应方程的定义非常灵活。您可以定义简单的一阶反应、复杂的多步反应以及不同类型的反应机制。

kkchenjj的博客 1182

四旋翼飞行器建模(一)

四旋翼飞行器的姿态运动学和姿态动力学建模方法。

加斯顿工程师的博客 686

新的SOTA!谷歌团队通过复制粘贴实现目标检测新突破!

新的SOTA!谷歌团队通过复制粘贴实现目标检测新突破! 本文由林大佬原创,转载请注明出处,我们有来自腾讯、阿里等一线AI算法工程师组成微信交流群, 如果你想交流欢迎添加微信: jintianandmerry 拉群, 添加请备注 “交流群” 最近,谷歌大脑团队放出了一篇新的论文: 在文章末尾我会贴出论文链接和一些简短的个人评论, 还请大家多多指教. 先来看这篇论文实现的效果, 简单来说, 通过复制粘贴的数据曾广手段, 谷歌大脑团队发现可以很强的增加实例分割的各项指标,到底有多强?看这张图: 蓝色的线是

jinfagang1211的博客 462

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

电脑复制粘贴_ALTC 让电脑和手机能“跨屏”互相复制粘贴的免费工具!

很多用过Mac+iPhone的同学都知道苹果系列产品间有一个叫做“连续互通”功能,其中跨设备的「通用剪贴板」简直超级无敌好用!这功能可以让你无论在电脑端复制文字换到手机粘贴,或是反之从手机到电脑,你完全无需做任何操作,剪贴板内容都会自动同步,办公时是真心感到方便!而在 Windows 和Android安卓平台上,我们也可以借助「Alt-C」这款免费剪贴板同步工具来实现类似功能...

weixin_39796533的博客 4360

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

coco数据集目标检测论文_谷歌简单粗暴“复制粘贴”数据增广,刷新COCO目标检测与实例分割新高度...

近日,谷歌、UC伯克利与康奈尔大学的研究人员公布了一篇论文 Simple Copy-Paste is a Strong Data Augmentation Method for Instance Segmentation ,使用简单粗暴的“复制-粘贴”术,再次刷新COCO数据集上目标检测与实例分割的新高度。该论文全文无公式,也无算法流程图,介绍方法只用了3句话,如下:其余全是实验,但结果...

weixin_30460749的博客 271

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

知云文献翻译 linux_有了这个英文文献翻译助手,SCI论文阅读不用再复制粘贴

上一次给大家推荐SCI翻译神器后,大家的反响很强烈,看来大家对于英文写作都有一样的烦恼。身为科研工作者,SCI论文的写作确实是一座压垮很多人的大山。不过别怕,困难总会克服的。大家平时在阅读英文文献时,是不是这样的操作:1)用PDF阅读器打开文献,Ctrl+C复制英文,2)Alt+Tab切换到翻译软件,Ctrl+V粘贴英文,点击翻译。一句英文就这样翻译完成了!!完成了!!完成了!!啊,好有成就感,一...

weixin_39889788的博客 2988

谷歌浏览器好用的复制粘贴插件_谷歌(Chrome)浏览器插件安装教程

谷歌浏览器插件能够帮助我们实现很多酷炫的功能,如屏蔽广告,自动化点击,网页数据抓取。本文介绍下国内,谷歌(Chrome)浏览器插件安装方法。​不仅仅是 Chrome 浏览器,微软的 Edge,360 浏览器也都支持安装插件。(一)谷歌插件市场安装访问谷歌插件市场 https://chrome.google.com/webstore 如搜索:Web Scraper, 点击 "Add to Chrom...

weixin_29313423的博客 2936

谷歌简单粗暴“复制-粘贴”数据增广,刷新COCO目标检测与实例分割新高度

近日,谷歌、UC伯克利与康奈尔大学的研究人员公布了一篇论文 Simple Copy-Paste is a Strong Data Augmentation Method for Inst...

我爱计算机视觉 1600

57.3 AP!刷新COCO目标检测和实例分割新记录!谷歌提出复制-粘贴大法

点击上方“CVer”,选择加"星标"置顶重磅干货,第一时间送达上个月,Scaled-YOLOv4刚刚刷新COCO 目标检测的新记录:55.8% AP!昨天该数据又双叒叕...

阿木寺的博客 1050

谷歌 NotebookLM 支持生成中文播客

2025 年 4 月 29 日,NotebookLM 宣布其 “音频概览”(Audio Overviews)功能新增 76 种语言支持,其中包括中文。用户只需将文档、笔记、研究材料等上传至 NotebookLM,然后在设置中选择输出语言为 “中文(简体)” 或 “中文(繁体)”,NotebookLM 的 AI 就会基于上传的资料生成一段类似播客的中文音频。生成的中文播客听起来自然流畅,停顿、语调都很有真人感,很多时候还会以两位虚拟主持人对话的形式呈现,谷歌 NotebookLM 支持生成中文播客。

timer_017的博客 2148
上一篇: Python初学者请注意!别这样直接运行python命令,否则电脑等于“裸奔”
下一篇: 童年的游戏,Python一行代码就能玩
codingpy
博客等级 码龄11年 1870粉丝 104原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值