Вы объявили a
как переменную, но для определения вашей функции требуется аргумент, который также называется a
, но не связан с объявленной переменной.
Два варианта: вы можете передать переменную в функцию при вызове:
a=7
def fun1(a):
if a%2==0:
return 0
else:
return 1
fun1(a)
Или вы можете объявить a
как global
внутри функции, чтобы получить к ней доступ без необходимости передать его в качестве аргумента при вызове функции:
a=7
def fun1():
global a
if a%2==0:
return 0
else:
return 1
fun1()
Единственный другой способ, который я могу придумать, - это изменить настройки Firefox. Я полагаю, вы не можете этого сделать.
РЕДАКТИРОВАТЬ:
Я сколотил клиентское решение на основе идеи URI данных. Он использует модифицированная версия кодировщика base64 и методика для двоичный XMLHTTPrequests Сценарий загружает файл PDF, затем генерирует и динамически размещает ссылку URI данных с помощью кодировщика base64.
Это может быть полезно, если вы хотите кодировать поток октетов, но не имеете доступа к
Обратите внимание: я только что опубликовал пример с использованием hunts.pdf , с которым OP тестировал.
/**
*
* Base64 encode / decode
* http://www.webtoolkit.info/
*
**/
var Base64 = {
// private property
_keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
// public method for encoding
encode : function (input) {
var output = "";
var chr1, chr2, chr2raw, chr3, chr3raw, enc1, enc2, enc3, enc4;
var i = 0;
//input = Base64._utf8_encode(input);
while (i < input.length) {
chr1 = input.charCodeAt(i++) & 0xFF;
chr2 = isNaN(chr2raw = input.charCodeAt(i++)) ? NaN : (chr2raw & 0xFF);
chr3 = isNaN(chr3raw = input.charCodeAt(i++)) ? NaN : (chr3raw & 0xFF);
enc1 = chr1 >> 2;
enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
enc4 = chr3 & 63;
if (isNaN(chr2)) {
enc3 = enc4 = 64;
} else if (isNaN(chr3)) {
enc4 = 64;
}
output = output +
this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);
}
return output;
}
}
// http://web.archive.org/web/20071103070418/mgran.blogspot.com/2006/08/downloading-binary-streams-with.html
//fetches BINARY FILES synchronously using XMLHttpRequest
load_url = function(url) {
var req = new XMLHttpRequest();
req.open('GET',url,false);
//XHR binary charset opt by Marcus Granado 2006 [http://mgran.blogspot.com]
req.overrideMimeType('text/plain; charset=x-user-defined');
req.send(null);
if (req.status != 200){
alert(req.status);
return '';
}
return req.responseText;
}
function getDataURI(filename)
{
var file = load_url(filename);
var uueFile = Base64.encode(file);
var uri = 'data:application/octet-stream;base64,' + encodeURIComponent(uueFile);
return uri;
}
window.addEventListener("load",
function()
{
var link = getDataURI("foo.pdf");
document.getElementById("myDiv").innerHTML += '<a href="' + link + '"><code>' + link + '</code></a><br><br>';
}
Если вы можете вывести файл клиенту в base64, вы можете использовать uris данных для загрузки.
location.href = 'data:application/octet-stream;base64,' + appendPDFContentHere
OR
<a href="data:application/octet-stream;base64,appendPDFContentHere">pdf</a>
Это будет работать только в браузерах, отличных от IE, но как вы просили для firefox, это должно работать нормально.
EDIT:
Оба приведенных ниже примера содержат байты для создания PNG. Если вы щелкнете по первому, вы сможете просмотреть изображение, как обычно в браузере. однако, если вы нажмете на вторую ссылку, это заставит вас загрузить изображение. Сохраните его как .png, и вы увидите, что это точно такие же изображения. Единственное различие между двумя ссылками - это тип пантомимы
просмотр изображения ( сокращенный URL-адрес предварительного просмотра ) - тип пантомимы: изображение / png
изображение загрузки ( сокращенный URL предварительного просмотра ) - тип пантомимы: application / octet-stream
Вы спросили, что вы поместили вместо appendPDFContentHere , и ответом являются байты в кодировке base64, которые составляют PDF. Я использовал этот онлайн-кодировщик base64 для кодирования изображения, используемого в примере.