Для юристов на языке программирования я просмотрел следующие разделы ECMAScript 5.1 (который легче читать, чем последнее издание), и дойдите до , задав его в списке рассылки ECMAScript ,
TL; DR : все передаются по значению, но свойства объектов - это ссылки, а определение объекта, как правило, отсутствует в стандарте.
Раздел 11.2.4 «Списки аргументов» говорит следующее о создании списка аргументов, состоящего всего из 1 аргумента:
Вывод ArgumentList: AssignmentExpression оценивается следующим образом:
- Пусть ref является результатом оценки AssignmentExpression.
- Пусть arg - GetValue (ref).
- Возвращает список, единственным элементом которого является arg.
В этом разделе также перечислены случаи, когда список аргументов имеет 0 или> 1 аргумент.
Таким образом, все передается по ссылке.
Доступ к свойствам объекта
Раздел 11.2.1 «Аксессоры свойств»
Вывод MemberExpression: MemberExpression [Expression] оценивается следующим образом:
- Пусть baseReference будет результатом оценки MemberExpression.
- Пусть baseValue будет GetValue (baseReference).
- Пусть свойствоNameReference является результатом вычисления выражения.
- Пусть свойствоNameValue будет GetValue (свойствоNameReference).
- Вызов CheckObjectCoercible (baseValue).
- Пусть свойствоNameString будет ToString (propertyNameValue).
- If синтаксическое производство, которое оценивается, содержится в коде строгого режима, пусть строгое истинно, иначе пусть строгое будет ложным.
- Возвращает значение типа Reference , базовое значение которого baseValue и ссылочным именем которого является свойствоNameString, а флаг строгого режима - строгий.
Таким образом, свойства объектов всегда доступны как рефери се.
On Reference
Описан в разделе 8.7 «Тип ссылочной спецификации», что ссылки не являются реальными типами на языке - они используются только для описания поведения delete, typeof и операторы присваивания.
Определение «Object»
В редакции 5.1 определено, что «Object - это совокупность свойств». Поэтому мы можем заключить, что значение объекта - это коллекция, но что касается того, что значение коллекции плохо определено в спецификации, и требует немного усилий для понимания.
Я использовал модуль mechanize
и его метод Browser.retrieve (). В прошлом он занимал 100% процессор и загружал вещи очень медленно, но в некоторых последних версиях исправлена эта ошибка и работает очень быстро.
Пример:
import mechanize
browser = mechanize.Browser()
browser.retrieve('http://www.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.32-rc1.tar.bz2', 'Downloads/my-new-kernel.tar.bz2')
Механизм основан на urllib2 , поэтому urllib2 также может иметь аналогичный метод ... но я не могу найти его сейчас.
Вы также можете использовать shutil :
import shutil
try:
from urllib.request import urlopen # Python 3
except ImportError:
from urllib2 import urlopen # Python 2
def get_large_file(url, file, length=16*1024):
req = urlopen(url)
with open(file, 'wb') as fp:
shutil.copyfileobj(req, fp, length)
Вы можете использовать urllib.retrieve () для загрузки файлов:
Пример:
try:
from urllib import urlretrieve # Python 2
except ImportError:
from urllib.request import urlretrieve # Python 3
url = "http://www.examplesite.com/myfile"
urlretrieve(url,"./local_file")
urllib.urlretrieve(url,"./local_file")
– Blairg23
23 November 2015 в 08:54
BLOCK_SIZE
= 8 * 1024 и обычно фиксируется – Antony Hatchkins 13 May 2011 в 06:14