Tuesday 30 May 2017

Opções Stringio Binárias


Um guia para opções binárias de negociação nos EUA As opções binárias são baseadas em uma simples afirmação ou não proposição: Será um ativo subjacente ser acima de um determinado preço em um determinado momento Traders colocar negócios com base em se eles acreditam que a resposta é sim ou não, tornando Um dos ativos financeiros mais simples para o comércio. Esta simplicidade resultou em grande apelo entre os comerciantes e recém-chegados para os mercados financeiros. Por mais simples que pareça, os comerciantes devem entender perfeitamente como funcionam as opções binárias, quais mercados e prazos eles podem negociar com opções binárias, vantagens e desvantagens desses produtos e quais as empresas estão legalmente autorizadas a fornecer opções binárias aos residentes norte-americanos. As opções binárias negociadas fora dos EUA são normalmente estruturadas de forma diferente dos binários disponíveis nas bolsas nos EUA. Ao considerar especular ou hedging. Opções binárias são uma alternativa, mas apenas se o comerciante entende plenamente os dois resultados potenciais dessas opções exóticas. Opções Binárias Explicadas As opções binárias fornecem uma maneira de negociar mercados com risco limitado e potencial de lucro limitado, com base em uma proposta de sim ou não. Por exemplo: O preço do ouro será acima de 1.250 às 1:30 p. m. hoje Se você acredita que será, você compra a opção binária. Se pensar ouro estará abaixo de 1.250 às 1:30 p. m. então você vende esta opção binária. O preço de uma opção binária é sempre entre 0 e 100, e assim como outros mercados financeiros, há um lance e pedir preço. O binário acima pode ser negociado em 42,50 (lance) e 44,50 (oferta) em 1 p. m. Se você comprar a opção binária direita, então você vai pagar 44,50, se você decidir vender direito então youll vender em 42,50. Vamos supor que você decidir comprar em 44,50. Se às 13:30 o preço do ouro é acima de 1,250, sua opção expira e se torna vale 100. Você faz um lucro de 100 - 44,50 55,50 (menos taxas). Isso é chamado estar no dinheiro. Mas se o preço do ouro é inferior a 1.250 às 1:30 p. m. a opção expira em 0. Portanto, você perde o 44,50 investido. Isso chamou do dinheiro. A oferta e a oferta flutuam até a opção expirar. Você pode fechar sua posição a qualquer momento antes do vencimento para bloquear um lucro ou reduzir uma perda (em comparação com deixá-lo expirar fora do dinheiro). Eventualmente todas as opções se estabelecem em 100 ou 0 100 se a proposição de opção binária for verdadeira e 0 se resultar ser falsa. Assim, cada opção binária tem um potencial de valor total de 100, e é um jogo de soma zero o que você faz perder alguém, eo que você perde alguém faz. Cada comerciante deve colocar o capital para o seu lado do comércio. Nos exemplos acima, você comprou uma opção em 44.50, e alguém vendeu essa opção. Seu risco máximo é de 44,50 se a opção se fixar em 0, portanto, o comércio custa você 44,50. A pessoa que vendeu para você tem um risco máximo de 55,50 se a opção se fixar em 100 (100 - 44,50 55,50). Um comerciante pode comprar vários contratos, se desejado. Outro exemplo: NASDAQ US Tech 100 índice gt 3,784 (11 a. m.). A oferta e oferta atual é de 74,00 e 80,00, respectivamente. Se você acha que o índice estará acima de 3.784 às 11:00 você compra a opção binária em 80 (ou colocar um lance a um preço mais baixo e espero que alguém vende a você a esse preço). Se você acha que o índice será inferior a 3.784 naquele momento, você vende em 74,00 (ou colocar uma oferta acima desse preço e espero que alguém compra-lo de você). Você decide vender em 74.00, acreditando que o índice vai cair abaixo de 3.784 (chamado de preço de exercício) por 11 a. m. E se você realmente gosta do comércio, você pode vender (ou comprar) contratos múltiplos. A Figura 1 mostra um comércio para vender cinco contratos (tamanho) em 74.00. A plataforma Nadex calcula automaticamente a perda máxima e o ganho quando você cria uma ordem, chamada de ticket. O lucro máximo deste bilhete é 370 (74 x 5 370), ea perda máxima é 130 (100 - 74 26 x 5 130) com base em cinco contratos e uma venda Preço de 74,00. (Para obter mais informações sobre este tópico, consulte Introdução às opções binárias) Como o lance e o pedido são determinados O lance e o pedido são determinados pelos próprios comerciantes quando avaliam a probabilidade de a proposição ser verdadeira ou não. Em termos simples, se o lance e pedir uma opção binária estiverem em 85 e 89, respectivamente, os comerciantes estão assumindo uma probabilidade muito alta de que o resultado da opção binária seja sim e a opção expirará no valor de 100. Se o lance E pedir estão perto de 50, os comerciantes não têm certeza se o binário vai expirar em 0 ou 100 suas chances mesmo. Se o lance e pedir estão em 10 e 15, respectivamente, isso indica que os comerciantes pensam que há uma alta probabilidade de o resultado da opção será não, e expiram no valor de 0. Os compradores nesta área estão dispostos a assumir o pequeno risco para um grande ganho. Enquanto aqueles que vendem estão dispostos a tomar um lucro pequeno, mas muito provável para um grande risco (em relação ao seu ganho). Onde trocar opções binárias As opções binárias são negociadas na troca Nadex. O primeiro intercâmbio jurídico norte-americano centrou-se em opções binárias. Nadex fornece sua própria plataforma de negociação de opções binárias baseada em navegador que os comerciantes podem acessar através de conta demo ou conta real. A plataforma de negociação fornece gráficos em tempo real juntamente com acesso direto ao mercado para os preços das opções binárias atuais. Opções binárias também estão disponíveis através do Chicago Board Options Exchange (CBOE). Qualquer pessoa com uma conta de corretagem aprovada por opções pode negociar opções binárias CBOE através de sua conta de negociação tradicional. Nem todos os corretores fornecem negociação de opções binárias, no entanto. Cada contrato Nadex negociado custa 0,90 para entrar e 0,90 para sair. A taxa é limitada em 9, assim que comprar 15 lotes ainda custa apenas 9 para entrar e 9 para sair. Se você realizar o seu comércio até liquidação e terminar o dinheiro, a taxa de saída é avaliado a você no momento da expiração. Se você segurar o comércio até a liquidação, mas terminar fora do dinheiro, nenhuma taxa de comércio para sair é avaliado. As opções binárias do CBOE são negociadas através de vários corretores de opção cada uma cobrar sua própria taxa de comissão. Escolha seu mercado binário Várias classes de ativos são negociáveis ​​via opção binária. A Nadex oferece negociação em principais índices, como o Dow 30 (Wall Street 30), o SampP 500 (US 500), o Nasdaq 100 (US TECH 100) eo Russell 2000 (US Smallcap 2000). Também estão disponíveis índices globais para o Reino Unido (FTSE 100), Alemanha (Alemanha 30) e Japão (Japão 225). A Nadex oferece opções binárias de commodities relacionadas ao preço do petróleo bruto. Gás natural, ouro, prata, cobre, milho e soja. Eventos de notícias de negociação também é possível com opções binárias de eventos. Comprar ou vender opções baseadas em se o Federal Reserve vai aumentar ou diminuir as taxas, ou se as reivindicações desempregados e as folhas de pagamento não agrícolas virá em acima ou abaixo estimativas de consenso. (Para mais sobre este tópico, veja Opções exóticas: uma fuga da negociação ordinária) O CBOE oferece duas opções binárias para o comércio. Uma opção de índice SampP 500 (BSZ) com base no índice SampP 500 e uma opção de índice de volatilidade (BVZ) com base no índice de volatilidade CBOE (VIX). Escolha seu período de tempo Um comerciante pode escolher entre as opções binárias do Nadex (nas classes de ativos acima) que expiram por hora, diariamente ou semanalmente. Opções horárias oferecem oportunidade para os comerciantes do dia. Mesmo em condições de mercado silenciosas, para atingir um retorno estabelecido se eles estão corretos na escolha da direção do mercado durante esse período de tempo. Opções diárias expiram no final do dia de negociação, e são úteis para os comerciantes dia ou aqueles que procuram para cobrir outras ações, forex ou commodity explorações contra os movimentos dias. Opções semanais expiram no final da semana de negociação e, portanto, são negociados por comerciantes swing ao longo da semana, e também por dia comerciantes como as opções expiry abordagens na tarde de sexta-feira. Os contratos baseados em eventos expiram após o comunicado de imprensa oficial associado ao evento e, portanto, todos os tipos de comerciantes assumem posições com bastante antecedência - e até à expiração. Vantagens e Desvantagens Ao contrário dos mercados de ações reais ou forex onde as diferenças de preços ou derrapagem podem ocorrer, o risco em opções binárias é limitado. Não é possível perder mais do que o custo do comércio. Rendimentos melhores que a média também são possíveis em mercados muito silenciosos. Se um índice de ações ou par forex é mal se movendo, é difícil de lucro, mas com uma opção binária o pagamento é conhecido. Se você comprar uma opção binária em 20, ou estabelecerá em 100 ou 0, fazendo lhe 80 em seu investimento 20 ou em 20 que você está perdendo. Esta é uma recompensa 4: 1 à relação de risco. Uma oportunidade que é improvável de ser encontrada no mercado real subjacente à opção binária. O outro lado é que o seu ganho é sempre limitado. Não importa o quanto o par ações ou forex se move em seu favor, a opção mais uma opção binária pode valer é 100. Compra de contratos de várias opções é uma maneira potencialmente mais lucro de um movimento de preço esperado. Desde opções binárias valem um máximo de 100, que os torna acessíveis para os comerciantes, mesmo com limitado capital comercial. Como os limites tradicionais de negociação de dia de ações não se aplicam. Negociação pode começar com um depósito de 100 na Nadex. Opções binárias são um derivativo com base em um ativo subjacente, que você não possui. Portanto, você não tem direito a direitos de voto ou dividendos a que você tenha direito se possuísse um estoque real. As opções binárias são baseadas em uma proposição sim ou não. Seu potencial de lucro e perda são determinados pelo seu preço de compra ou venda e se a opção expira no valor de 100 ou 0. Risco e recompensa são ambos limitados e você pode sair de uma opção a qualquer momento antes de expirar para bloquear um lucro ou reduzir um perda. As opções binárias dentro dos EUA são negociadas através das trocas Nadex e CBOE. Empresas estrangeiras que solicitam residentes norte-americanos para negociar sua forma de opções binárias são normalmente operando ilegalmente. Negociação de opções binárias tem uma barreira baixa à entrada. Mas só porque algo é simples doesnt significa itll ser fácil de ganhar dinheiro com. Há sempre alguém no outro lado do comércio que pensa theyre correto e youre errado. Somente o comércio com o capital que você pode ter recursos para perder e negociar uma conta demo para se tornar completamente confortável com o modo como as opções binárias funcionam antes de negociar com capital real. Opções Binárias Trading com opção IQ O que é opções binárias Primeiro de tudo, Ferramenta de negociação que lhe permite estimar a quantidade de lucro potencial com antecedência. Negociação de opções binárias pode trazer uma renda substancial no menor tempo possível. Traders compra opções a um preço predeterminado. Negociação on-line pode ser rentável se o comerciante identifica corretamente o movimento do mercado. Vantagens de negociação de opções binárias é uma área de alto risco onde você pode dobrar ou até mesmo triplicar seu capital ou perdê-lo em poucos minutos. Opções binárias têm várias vantagens que tornam possível obter mais lucro com risco previsível. Uma opção com um lucro fixo difere da negociação convencional. Iniciantes podem trocar opções binárias com IQ Option tão bem como comerciantes experientes. Todo o processo é totalmente automatizado. Os comerciantes das opções binárias estão cientes de seus lucros adiantado seu objetivo principal é selecionar a direção correta do movimento do mercado. Eles precisam escolher entre duas direções apenas para cima ou para baixo. Dois tipos de comércio on-line A plataforma IQ Option permite que você troque opções binárias em dois modos básicos. A conta da prática é para o treinamento. Para abrir uma conta prática e para testar sua força, você nem precisa fazer um depósito. Para negociação real, você precisa depositar 10 apenas. Isso garante um bônus de até 36. Ao abrir uma conta para um montante maior (de 3.000), um gerente de conta pessoal estará ao seu serviço. As operações de negociação oferecidas neste website podem ser consideradas Operações de Negociação de Alto Risco ea sua execução pode ser muito arriscada. Comprar instrumentos financeiros ou utilizar serviços oferecidos no site pode resultar em perdas significativas ou mesmo em uma perda total de todos os fundos em sua conta. É-lhe concedido direitos não-exclusivos não-transferíveis limitados para utilizar o IP fornecido neste website para fins pessoais e não comerciais em relação aos serviços oferecidos no Website apenas. A empresa atua fora da Federação Russa. Eu. iqoption é de propriedade e operado pela Iqoption Europe Ltd. IQ Option, 20132017 Informações de recuperação de senha foram enviadas com sucesso para o seu e-mail O registro não está disponível na Federação Russa. Se você acha que está vendo esta mensagem por engano, entre em contato com supporttikoption. O que é novo no Python 3.0 14 de fevereiro de 2009 Este artigo explica os novos recursos no Python 3.0, em comparação com 2.6. O Python 3.0, também conhecido como 8220Python 30008221 ou 8220Py3K8221, é a primeira versão Python incompatível intencionalmente para trás. Há mais mudanças do que em um lançamento típico e mais importantes para todos os usuários do Python. No entanto, depois de digerir as mudanças, você descobriu que o Python realmente não alterou o máximo de 8211, geralmente consertando aborrecimentos e verrugas bem conhecidos, e removendo um monte de velho cruft. Este artigo não tenta fornecer uma especificação completa de todos os recursos novos, mas, em vez disso, tenta dar uma visão geral conveniente. Para obter detalhes completos, você deve consultar a documentação do Python 3.0, ou os muitos PEPs referenciados no texto. Se você quer entender a implementação completa e o raciocínio do projeto para um recurso particular, os PEP geralmente possuem mais detalhes do que a documentação regular, mas note que os PEP geralmente não são mantidos atualizados uma vez que um recurso foi totalmente implementado. Devido a restrições de tempo, este documento não é tão completo como deveria ter sido. Como sempre para uma nova versão, o arquivo MiscNEWS na distribuição de origem contém uma riqueza de informações detalhadas sobre cada coisa pequena que foi alterada. Bloqueios comuns de tropeço Esta seção lista essas poucas mudanças que provavelmente irão tropeçá-lo se o you8217re usado para o Python 2.5. Imprimir é uma função A declaração de impressão foi substituída por uma função de impressão (), com argumentos de palavras-chave para substituir a maior parte da sintaxe especial da declaração de impressão antiga (PEP 3105). Exemplos: você também pode personalizar o separador entre itens, por exemplo: a função print () doesn8217t suporta o recurso 8220softspace8221 da declaração de impressão antiga. Por exemplo, no Python 2.x, print quotAnquot, quotBquot escreveria quotAnBnquot, mas em Python 3.0, print (quotAnquot, quotBquot) escreve quotAn Bnquot. Inicialmente, você deve estar digitando a cópia antiga x muito no modo interativo. Tempo para reciclar os dedos para digitar print (x) em vez disso Ao usar a ferramenta de conversão de fonte a fonte 2to3, todas as instruções de impressão são convertidas automaticamente para chamadas de função de impressão (), portanto, esta é principalmente uma questão de não-problema para projetos maiores. Vistas e Iterators em vez de listas Algumas API conhecidas já não retornam listas: dict methods dict. keys (). Dict. items () e dict. values ​​() retornam 8220views8221 em vez de listas. Por exemplo, isso não funciona mais: k d. keys () k. sort (). Use k classificado (d) em vez disso (isso funciona em Python 2.5 também e é tão eficiente). Além disso, o dict. iterkeys (). Os métodos dict. iteritems () e dict. itervalues ​​() não são mais suportados. Mapa () e filtro () retorna iteradores. Se você realmente precisa de uma lista, uma solução rápida é, e. Lista (mapa (.)). Mas uma correção melhor é freqüentemente usar uma lista de compreensão (especialmente quando o código original usa lambda), ou reescrever o código para que não precise de uma lista. Particularmente complicado é o mapa () invocado para os efeitos secundários da função, a transformação correta é usar um loop regular para (uma vez que criar uma lista seria apenas um desperdício). Range () agora se comporta como xrange () usado para se comportar, exceto que ele funciona com valores de tamanho arbitrário. O último não existe mais. Zip () agora retorna um iterador. Comparando comparações O Python 3.0 simplificou as regras para ordenar comparações: os operadores de comparação de pedidos (lt. Lt. Gt. Gt) criam uma exceção TypeError quando os operandos don8217t possuem um ordenamento natural significativo. Assim, expressões como 1 lt. 0 gt Nenhum ou len lt len ​​não são mais válidos e, por exemplo, Nenhum lança Nenhum levanta TipoError em vez de retornar False. Um corolário é que classificar uma lista heterogênea já não faz sentido. Todos os elementos devem ser comparáveis ​​entre si. Observe que isso não se aplica aos operadores e os operadores: objetos de diferentes tipos incomparáveis ​​sempre comparam desiguais uns com os outros. Builtin. sorted () e list. sort () não aceitam mais o argumento cmp fornecendo uma função de comparação. Use o argumento chave em vez disso. N. B. Os argumentos de chave e reverso agora são 8220keyword-only8221. A função cmp () deve ser tratada como desaparecida e o método especial cmp () não é mais suportado. Use lt () para classificar, eq () com hash (). E outras comparações ricas, conforme necessário. (Se você realmente precisar da funcionalidade cmp (), você poderia usar a expressão (a gt b) - (a lt b) como o equivalente para cmp (a, b).) PEP 0237. Essencialmente, há muito renomeado para int. Ou seja, existe apenas um tipo integral incorporado, chamado int, mas se comporta principalmente como o antigo tipo longo. PEP 0238. Uma expressão como 12 retorna um flutuador. Use 12 para obter o comportamento de trunção. (A última sintaxe existe há anos, pelo menos desde Python 2.2.) A constante sys. maxint foi removida, uma vez que não existe mais um limite para o valor de números inteiros. No entanto, sys. maxsize pode ser usado como um inteiro maior do que qualquer lista prática ou índice de string. Ele está em conformidade com o tamanho inteiro enter8282 da implementação 8217natural8221 e normalmente é o mesmo que sys. maxint em versões anteriores na mesma plataforma (assumindo as mesmas opções de compilação). O repr () de um inteiro longo doesn8217t inclui o L que está por trás, então o código que destrói incondicionalmente esse caractere cortará o último dígito. (Use str () em vez disso). Os literais octal não são mais do formulário 0720 use 0o720 em vez disso. Texto vs. Dados em vez de Unicode Vs. 8 bits Tudo o que achou que sabia sobre dados binários e o Unicode mudou. O Python 3.0 usa os conceitos de texto e dados (binários) em vez de cadeias Unicode e cadeias de 8 bits. Todo o texto é Unicode, porém codificado O Unicode é representado como dados binários. O tipo usado para armazenar texto é str. O tipo usado para armazenar dados é bytes. A maior diferença com a situação 2.x é que qualquer tentativa de misturar texto e dados no Python 3.0 cria TypeError. Enquanto que se você fosse misturar Unicode e cadeias de 8 bits no Python 2.x, funcionaria se a cadeia de 8 bits contenha apenas bytes de 7 bits (ASCII), mas você obteria UnicodeDecodeError se contivesse não-ASCII Valores. Esse comportamento específico do valor causou numerosos rostos tristes ao longo dos anos. Como conseqüência dessa mudança na filosofia, praticamente todo o código que usa Unicode, codificações ou dados binários provavelmente terá que mudar. A mudança é para melhor, como no mundo 2.x houve inúmeros erros que têm que ver com a mistura de texto codificado e não codificado. Para estar preparado no Python 2.x, comece a usar o unicode para todos os textos não codificados e str para dados binários ou codificados apenas. Então, a ferramenta 2to3 fará a maior parte do trabalho para você. Você não pode mais usar uquot. Quot literais para texto Unicode. No entanto, você deve usar bquot. Quot literais para dados binários. Como os tipos str e bytes não podem ser misturados, você deve sempre conversar explicitamente entre eles. Use str. encode () para passar de str para bytes. E bytes. decode () para passar de bytes para str. Você também pode usar bytes (s, codificação.) E str (b, codificação). respectivamente. Como str. O tipo de bytes é imutável. Existe um tipo mutable separado para armazenar dados binários em buffer, bytearray. Quase todas as APIs que aceitam bytes também aceitam bytearray. A API mutable é baseada em collections. MutableSequence. Todas as barras invertidas em literais de cordas crus são interpretadas literalmente. Isso significa que U e você escapa em cordas cruas não são tratados especialmente. Por exemplo, o ru20ac é uma string de 6 caracteres no Python 3.0, enquanto que em 2.6, uru20ac era o único personagem 8220euro8221. (Claro, essa mudança só afeta literais de cordas cruas, o caráter do euro é u20ac no Python 3.0.) O tipo abstrato do banco base foi removido. Use vez em vez disso. Os tipos str e bytes don8217t têm funcionalidade suficiente em comum para garantir uma classe base compartilhada. A ferramenta 2to3 (veja abaixo) substitui toda ocorrência de cadeia de bases com str. Os arquivos abertos como arquivos de texto (ainda o modo padrão para open ()) sempre usam uma codificação para mapear entre strings (na memória) e bytes (no disco). Arquivos binários (aberto com um b no argumento modo) usam sempre bytes na memória. Isso significa que, se um arquivo for aberto usando um modo ou codificação incorreta, o IO provavelmente falhará alto, em vez de produzir dados incorretos silenciosamente. Isso também significa que mesmo os usuários do Unix precisarão especificar o modo correto (texto ou binário) ao abrir um arquivo. Existe uma codificação padrão dependente da plataforma, que nas plataformas Unixy pode ser configurada com a variável de ambiente LANG (e às vezes também com outras variáveis ​​de ambiente relacionadas à localidade específicas da plataforma). Em muitos casos, mas não todos, o sistema padrão é UTF-8 você nunca deve contar com esse padrão. Qualquer aplicativo que lê ou escreva mais do que o texto ASCII puro provavelmente deve ter uma maneira de substituir a codificação. Não há mais necessidade de usar os fluxos compatíveis com codificação no módulo de codecs. Os nomes de arquivos são passados ​​e retornados de APIs como cadeias (Unicode). Isso pode apresentar problemas específicos da plataforma porque, em alguns nomes de arquivos, as plataformas são cadeias de bytes arbitrárias. (Por outro lado, nos nomes de arquivos do Windows são armazenados nativamente como Unicode.) Como um trabalho, a maioria das APIs (por exemplo, open () e muitas funções no módulo OS) que aceitam bytes de objetos, bem como strings, e um Algumas APIs têm uma maneira de pedir um valor de retorno de bytes. Assim, os. listdir () retorna uma lista de instâncias de bytes se o argumento for uma instância de bytes e os. getcwdb () retorna o diretório de trabalho atual como uma instância de bytes. Observe que quando os. listdir () retorna uma lista de strings, nomes de arquivos que não podem ser decodificados corretamente são omitidos em vez de criar UnicodeError. Algumas APIs do sistema como os. environ e sys. argv também podem apresentar problemas quando os bytes disponibilizados pelo sistema não são interpretáveis ​​usando a codificação padrão. Definir a variável LANG e reverter o programa é provavelmente a melhor abordagem. PEP 3138. O repr () de uma seqüência de caracteres não escapa mais de caracteres não-ASCII. Ainda escapa aos caracteres de controle e aos pontos de código com status não imprimível no padrão Unicode, no entanto. PEP 3120. A codificação de origem padrão é agora UTF-8. PEP 3131. As letras não-ASCII agora são permitidas em identificadores. (No entanto, a biblioteca padrão permanece ASCII somente com a exceção dos nomes dos contribuidores nos comentários.) Os módulos StringIO e cStringIO desapareceram. Em vez disso, importe o módulo io e use io. StringIO ou io. BytesIO para texto e dados, respectivamente. Veja também o Unicode HOWTO. Que foi atualizado para o Python 3.0. Visão geral das alterações de sintaxe Esta seção fornece uma breve visão geral de todas as alterações sintáticas no Python 3.0. Nova sintaxe PEP 3107. Argumento de função e notas de valor de retorno. Isso fornece uma maneira padronizada de anotar parâmetros de função8217 e valor de retorno. Não há semânticas anexadas a essas anotações, exceto que podem ser introspectivas no tempo de execução usando o atributo de anotações. A intenção é incentivar a experimentação através de metaclasses, decoradores ou frameworks. PEP 3102. Argumentos somente para palavras-chave. Os parâmetros nomeados que ocorrem após args na lista de parâmetros devem ser especificados usando sintaxe de palavras-chave na chamada. Você também pode usar um nulo na lista de parâmetros para indicar que você não aceita uma lista de argumentos de comprimento variável, mas você tem argumentos apenas para palavras-chave. Os argumentos das palavras-chave são permitidos após a lista das classes base em uma definição de classe. Isso é usado pela nova convenção para especificar uma metaclasse (veja a próxima seção), mas também pode ser usado para outros fins, desde que a metaclass o suporte. PEP 3104. Declaração não local. Usando x não local, agora você pode atribuir diretamente a uma variável em um escopo externo (mas não global). Nonlocal é uma nova palavra reservada. PEP 3132. Descompactação estendida estendida. Agora você pode escrever coisas como a, b, somesequência de descanso. E até mesmo descansar, um material. O objeto restante é sempre uma lista (possivelmente vazia), o lado direito pode ser qualquer iterável. Exemplo: compreensões do dicionário: significa o mesmo que o dict (coisas), mas é mais flexível. (Isto é PEP 0274 vindicado. -) Definir literais, e. . Observe que é um conjunto de uso de dicionário vazio () para um conjunto vazio. Definir compreensões também são suportados, e. Significa o mesmo conjunto (coisas), mas é mais flexível. Novos literais octal, e. 0o720 (já em 2.6). Os velhos literais octal (0720) desapareceram. Novos literais binários, e. 0b1010 (já em 2.6), e há uma nova função de compilação correspondente, bin (). Os literais de bytes são introduzidos com um líder b ou B. E há uma nova função de compilação correspondente, bytes (). A sintaxe alterada como e com são agora palavras reservadas. (Desde 2.6, na verdade.) Verdadeiro. Falso. E Nenhum são palavras reservadas. (2.6 já aplicou parcialmente as restrições sobre Nenhum). PEP 3115. Nova sintaxe da Metaclasse. Em vez de: você agora deve usar: A variável de metaclass do módulo-módulo não é mais suportada. (Era uma muleta para tornar mais fácil o padrão para classes de estilo novo sem derivar todas as classes do objeto.) As compreensões da lista já não suportam a forma sintática. Para var no item1. Item2. . Usar . Para var em (item1. Item2.) Em vez disso. Observe também que as compreensões da lista têm diferentes semânticas: elas estão mais próximas do açúcar sintático para uma expressão de gerador dentro de um construtor de lista () e, em particular, as variáveis ​​de controle de loop não são mais vazadas para o alcance circundante. As elipses (.) Podem ser usadas como uma expressão atômica em qualquer lugar. (Anteriormente só foi permitido em fatias.) Além disso, agora deve ser escrito como. . (Anteriormente também poderia ser escrito como ... por um mero acidente da gramática.) Sintaxe removida PEP 3113. O desembalagem do parâmetro Tuple foi removida. Você não pode mais escrever uma definição (a, (b, c)). . Use def foo (a, bc): b, c bc em vez disso. Removido backticks (use repr () em vez disso). Removido ltgt (use em vez disso). Palavra-chave removida: exec () não é mais uma palavra-chave que permanece como uma função. (Felizmente, a sintaxe da função também foi aceita em 2.x.) Observe também que exec () já não possui um argumento de fluxo em vez de exec (f) você pode usar o exec (f. read ()). Os literais inteiros não suportam mais um l ou L. Os literais de cordas já não suportam um líder u ou U. A sintaxe de importação do módulo só é permitida no nível do módulo, não mais nas funções internas. A única sintaxe aceitável para as importações relativas é de. Nome da importação do módulo. Todos os formulários de importação que não começam. São interpretados como importações absolutas. (PEP 0328) As classes clássicas se foram. Mudanças já presentes no Python 2.6 Uma vez que muitos usuários provavelmente fazem o salto direto do Python 2.5 para o Python 3.0, esta seção lembra o leitor de novos recursos que foram projetados originalmente para o Python 3.0, mas que foram suportados no Python 2.6. As seções correspondentes no What8217s New no Python 2.6 devem ser consultadas para descrições mais longas. PEP 343: a indicação 8216with8217. A declaração com é agora uma característica padrão e não precisa mais ser importada do futuro. Verifique também os Gerenciadores de contexto de escrita e o módulo contextlib. PEP 366: Importações Relativas Explícitas a partir de um Módulo Principal. Isso aumenta a utilidade da opção - m quando o módulo referenciado vive em um pacote. PEP 370: Diretório de pacotes de sites por usuário. PEP 371: o pacote multiprocessamento. PEP 3101: formatação avançada de seqüências de caracteres. Nota: a descrição 2.6 menciona o formato () para ambas as cadeias de 8 bit e Unicode. Em 3.0, apenas o tipo str (cadeias de texto com suporte Unicode) suporta este método, o tipo de bytes não. O plano é, eventualmente, tornar esta a única API para formatação de seqüência e começar a depreciar o operador no Python 3.1. PEP 3105: imprimir como uma função. Este é agora um recurso padrão e já não precisa ser importado do futuro. Mais detalhes foram dados acima. PEP 3110: mudanças de manipulação de exceção. A exceto exc como a sintaxe var é agora padrão e exceto exc. Var não é mais suportado. (Claro, a parte var é ainda opcional.) PEP 3112: Byte Literals. O bquot. Quot string literal notation (e suas variantes, como b., Bquotquotquotquotquotquot e quot) agora produz um literal de bytes de tipo. PEP 3116: Biblioteca IO nova. O módulo io é agora a maneira padrão de fazer o arquivo IO e os valores iniciais do sys. stdin. Sys. stdout e sys. stderr são instâncias de io. TextIOBase. A função open-open () agora é um alias para io. open () e possui uma codificação de argumentos de palavras-chave adicionais. Erros. Newline e closefd. Observe também que um argumento de modo inválido agora aumenta ValueError. Não IOError. O objeto de arquivo binário subjacente a um objeto de arquivo de texto pode ser acessado como f. buffer (mas tenha cuidado de que o objeto de texto mantenha um buffer de si mesmo para acelerar as operações de codificação e decodificação). PEP 3118: protocolo revisado do buffer. O antigo builtin buffer () agora é realmente o novo armazenamento de memória () fornece (principalmente) funcionalidade semelhante. PEP 3119: Abstract Base Classes. O módulo abc e o ABC definidos no módulo de coleções desempenham um papel um pouco mais proeminente na linguagem agora, e os tipos de cobrança conjuntos, como dict e list, estão em conformidade com as coleções. Manipulação e cobrança. Mudeiqüência ABC, respectivamente. PEP 3127: suporte e sintaxe literal Integer. Como mencionado acima, a nova notação literal octal é a única suportada, e os literais binários foram adicionados. PEP 3129: Decoradores de classe. PEP 3141: Uma hierarquia de tipos para números. O módulo de números é outro novo uso do ABC, definindo o Python8217s 8220numeric tower8221. Observe também o novo módulo de frações que implementa numbers. Rational. Alterações da biblioteca Devido a restrições de tempo, este documento não cobre de forma exaustiva as mudanças muito extensas na biblioteca padrão. PEP 3108 é a referência para as principais mudanças na biblioteca. Aqui, uma revisão de cápsula: muitos módulos antigos foram removidos. Alguns, como gopherlib (já não usado) e md5 (substituídos por hashlib), já estavam obsoletos pelo PEP 0004. Outros foram removidos como resultado da remoção de suporte para várias plataformas, como Irix, BeOS e Mac OS 9 (veja PEP 0011). Alguns módulos também foram selecionados para remoção no Python 3.0 por falta de uso ou porque existe uma melhor substituição. Veja PEP 3108 para uma lista exaustiva. O pacote bsddb3 foi removido porque a sua presença na biblioteca padrão principal provou ao longo do tempo que é um fardo especial para os principais desenvolvedores devido ao teste da instabilidade e ao cronograma de lançamento do Berkeley DB8217s. No entanto, o pacote está vivo e bem, mantido externamente no jcea. esprogramacionpybsddb. htm. Alguns módulos foram renomeados porque seu antigo nome desobedeceu PEP 0008. Ou por vários outros motivos. Here8217s a lista: um padrão comum no Python 2.x é ter uma versão de um módulo implementado no Python puro, com uma versão acelerada opcional implementada como uma extensão C por exemplo, pickle e cPickle. Isso coloca o fardo de importar a versão acelerada e caindo na versão Python pura em cada usuário desses módulos. No Python 3.0, as versões aceleradas são consideradas detalhes de implementação das versões Python puras. Os usuários sempre devem importar a versão padrão, que tenta importar a versão acelerada e retorna à versão Python pura. O par de pinos de pickle cPickle recebeu esse tratamento. O módulo de perfil está na lista para 3.1. O módulo StringIO foi transformado em uma classe no módulo io. Alguns módulos relacionados foram agrupados em pacotes, e geralmente os nomes dos submódulos foram simplificados. Os novos pacotes resultantes são: dbm (anydbm. Dbhash. Dbm. Dumbdbm. Gdbm. Whichdb). Html (HTMLParser. Htmlentitydefs). Http (httplib. BaseHTTPServer. CGIHTTPServer. SimpleHTTPServer. Cookie. Cookielib). Tkinter (todos os módulos relacionados com Tkinter, exceto a tartaruga). O público-alvo da tartaruga não se preocupa com o tkinter. Observe também que, a partir do Python 2.6, a funcionalidade da tartaruga foi grandemente aprimorada. Urllib (urllib. Urllib2. Urlparse. Robotparse). Xmlrpc (xmlrpclib. DocXMLRPCServer. SimpleXMLRPCServer). Algumas outras alterações aos módulos de biblioteca padrão, não cobertas pelo PEP 3108: conjuntos assassinados. Use a função set (). Limpeza do módulo sys: remove sys. exitfunc (). Sys. excclear (). Sys. exctype. Valor de sys. exc. Sys. exctraceback. (Observe que sys. lasttype etc. permanecem.) Limpeza do tipo array. array: os métodos read () e write () desapareceram use fromfile () e tofile () em vez disso. Além disso, o c typecode para array desapareceu 8211 use b para bytes ou u para caracteres Unicode. Limpeza do módulo do operador: remove sequenceIncludes () e isCallable (). Limpeza do módulo de thread: acquisitionlock () e releaselock () foram usados ​​use () e release () em vez disso. Limpeza do módulo aleatório: removeu a API jumpahead (). O novo módulo se foi. As funções os. tmpnam (). Os. tempnam () e os. tmpfile () foram removidos em favor do módulo tempfile. O módulo tokenize foi alterado para funcionar com bytes. O ponto de entrada principal agora é tokenize. tokenize (). Em vez de generatetokens. String. letters e seus amigos (string. lowercase e string. upercase) desapareceram. Utilize string. asciiletters etc. em vez disso. (O motivo para a remoção é que string. letters e amigos tiveram comportamento específico de local, o que é uma má idéia para o 8220constants8221 globalmente atraente.) Módulo renomeado de compilação (removendo os sublinhados, adicionando um 8216s8217). A variável incorporada encontrada na maioria dos namespaces globais é inalterada. Para modificar um compilador, você deve usar builtins. Não está preparado PEP 3101. Uma nova abordagem para formatação de seqüência de caracteres Um novo sistema para operações de formatação de seqüências de caracteres incorporadas substitui o operador de formatação de seqüência de caracteres. (No entanto, o operador ainda é suportado, ele será obsoleto no Python 3.1 e removido do idioma em algum momento posterior.) Leia o PEP 3101 para a colher cheia. Mudanças para Exceções As APIs para levantamento e captura de exceção foram limpas e novos recursos poderosos adicionados: PEP 0352. Todas as exceções devem ser derivadas (direta ou indiretamente) da BaseException. Esta é a raiz da hierarquia de exceções. Isso não é novo como uma recomendação, mas o requisito de herdar da BaseException é novo. (Python 2.6 ainda permitiu que as classes clássicas fossem criadas e não colocassem nenhuma restrição sobre o que você pode pegar). Como conseqüência, as exceções de cadeia são finalmente verdadeiras e completamente mortas. Quase todas as exceções deveriam derivar da Exceção A BaseException só deve ser usada como uma classe base para exceções que só devem ser tratadas no nível superior, como SystemExit ou KeyboardInterrupt. O idioma recomendado para lidar com todas as excepções, exceto para esta última categoria, é usar, exceto Exceção. StandardError foi removido (em 2.6 já). As exceções já não se comportam como seqüências. Use o atributo args em vez disso. PEP 3109. Elevando exceções. Agora você deve usar raise Exception (args) em vez de aumentar Exception. Args. Além disso, você não pode mais especificar explicitamente um rastreamento em vez disso, se você tiver que fazer isso, você pode atribuir diretamente ao atributo traceback (veja abaixo). PEP 3110. Pegando exceções. Agora você deve usar, exceto SomeException como variável em vez de, exceto SomeException. variável . Além disso, a variável é explicitamente excluída quando o bloco exceto é deixado. PEP 3134. Encadeamento de exceção. Existem dois casos: encadeamento implícito e encadeamento explícito. O encadeamento implícito acontece quando uma exceção é gerada em um bloco de manipulador exceto ou final. Isso geralmente acontece devido a um erro no bloco de manipuladores, nós chamamos isso de uma exceção secundária. Nesse caso, a exceção original (que estava sendo tratada) é salva como o atributo de contexto da exceção secundária. O encadeamento explícito é invocado com esta sintaxe: (onde primaryexception é qualquer expressão que produz um objeto de exceção, provavelmente uma exceção que foi capturada anteriormente). Neste caso, a principal exceção é armazenada no atributo causa da exceção secundária. O rastreamento impresso quando ocorre uma exceção não tratada caminha a cadeia de atributos de causa e contexto e imprime um rastreamento separado para cada componente da cadeia, com a principal exceção na parte superior. (Os usuários de Java podem reconhecer esse comportamento). PEP 3134. Os objetos de exceção agora armazenam seu rastreamento como o atributo traceback. Isso significa que um objeto de exceção agora contém todas as informações relativas a uma exceção, e há menos razões para usar sys. excinfo () (embora o último não seja removido). Algumas mensagens de exceção são melhoradas quando o Windows falha ao carregar um módulo de extensão. Por exemplo, o código de erro 193 é agora 1 não é um aplicativo Win32 válido. As strings agora lidam com locais não ingleses. Diversos outros operadores de mudanças e métodos especiais agora retornam o oposto de. A menos que retorna NotImplemented. O conceito de métodos 8220unbound8221 foi removido do idioma. Ao referenciar um método como um atributo de classe, agora você obtém um objeto de função simples. Getlice (). Setslice () e delslice () foram mortos. A sintaxe ai: j agora se traduz em a. getitem (fatia (i, j)) (ou setitem () ou delitem (). Quando usado como um destino de atribuição ou exclusão, respectivamente). PEP 3114. O método padrão seguinte () foi renomeado para o próximo (). Os métodos especiais oct () e hex () são removidos 8211 oct () e hex () use index () agora para converter o argumento em um inteiro. Suporte removido para membros e métodos. Os atributos de função denominados funcX foram renomeados para usar o formulário X, liberando esses nomes no namespace de atributo de função para atributos definidos pelo usuário. Para saber, funcclosure. Funccode. Funcdefaults. Funcdict. Funcdoc. Funcglobals. Funcname foi renomeado para encerramento. Código. Padrões. Dict. Doc. Globais. Nome. respectivamente. Nonzero () agora é bool (). PEP 3135. Novo super (). Agora você pode invocar super () sem argumentos e (supondo que este esteja em um método de instância regular definido dentro de uma instrução de classe), a classe e a instância corretas serão escolhidas automaticamente. Com argumentos, o comportamento de super () é inalterado. PEP 3111. Rawinput () foi renomeado para entrada (). Ou seja, a nova função de entrada () lê uma linha de sys. stdin e a retorna com a nova linha perdida removida. Ele levanta EOFError se a entrada for encerrada prematuramente. Para obter o comportamento antigo da entrada (). Use eval (input ()). Um novo compilador seguinte () foi adicionado para chamar o método seguinte () em um objeto. Movido interno () para sys. intern (). Removido: aplicar (). Em vez de aplicar (f, args) use f (args). Removido callable (). Em vez de chamar (f) você pode usar hasattr (f, call). A função operator. isCallable () também desapareceu. Coação removida (). Esta função já não atende a um propósito agora que as classes clássicas se foram. Removido execfile (). Em vez de execfile (fn) use exec (open (fn).read ()). Arquivo removido. Use open (). Redução removida (). Use functools. reduce () se você realmente precisa disso, no entanto, 99 por cento do tempo, um loop explícito é mais legível. Recuperação removida (). Use imp. reload (). Removido. Dict. haskey () 8211 use o operador em vez disso. Alterações da API de compilação e C Devido a restrições de tempo, aqui está uma lista muito incompleta de alterações na API C. O suporte para várias plataformas foi descartado, incluindo, mas não limitado a, Mac OS 9, BeOS, RISCOS, Irix e Tru64. PEP 3118. Nova API Buffer. PEP 3121. Inicialização do amplificador de inicialização do módulo de extensão. PEP 3123. Fazendo PyObjectHEAD em conformidade com o padrão C. Não há mais suporte da API C para execução restrita. PyNumberCoerce. PyNumberCoerceEx. PyMemberGet. E as APIs PyMemberSet C são removidas. Novo API C PyImportImportModuleNoBlock. Funciona como PyImportImportModule mas won8217t bloqueio no bloqueio de importação (retornando um erro). Renomeou a conversão booleana do slot e do método de nível C: nbnonzero é agora nbbool. Removido METHOLDARGS e WITHCYCLEGC da API C. Desempenho O resultado líquido das generalizações 3.0 é que o Python 3.0 executa o benchmark Pystone em torno de 10 mais lento que o Python 2.5. Provavelmente a maior causa é a remoção de invólucros especiais para inteiros pequenos. Há um espaço para melhorias, mas isso acontecerá após o lançamento do 3.0 Porting To Python 3.0. Para a portabilidade do código-fonte Python 2.5 ou 2.6 existente para o Python 3.0, a melhor estratégia é a seguinte: (Pré-requisito :) Comece com excelente cobertura de teste. Port to Python 2.6. Este não deve ser mais trabalho do que a porta média de Python 2.x para Python 2. (x1). Certifique-se de que todos os seus testes passam. (Ainda usando 2.6 :) Ligue a opção de linha de comando -3. Isso permite avisos sobre recursos que serão removidos (ou alteração) em 3.0. Execute o seu conjunto de teste novamente e corrija o código para o qual você recebe avisos até que não haja avisos, e todos os testes ainda passam. Execute o tradutor de origem para origem 2to3 sobre a árvore de código-fonte. (Consulte 2to3 - Conversão de código automatizada do Python 2 a 3 para obter mais informações sobre esta ferramenta.) Execute o resultado da tradução no Python 3.0. Maneje manualmente os problemas restantes, corrigindo problemas até que todos os testes passem novamente. Não é recomendável tentar escrever o código-fonte que é executado inalterado em ambos os Python 2.6 e 3.0 you8217d tem que usar um estilo de codificação muito contorcido, p. Ex. Evitando declarações impressas, metaclasses e muito mais. Se você estiver mantendo uma biblioteca que precisa suportar o Python 2.6 e o ​​Python 3.0, a melhor abordagem é modificar o passo 3 acima, editando a versão 2.6 do código-fonte e executando novamente o tradutor 2to3, em vez de editar a versão 3.0 do Código fonte. Para portar extensões C para o Python 3.0, consulte Porting Extension Modules para 3.0 .16.2. Io 8212 Ferramentas principais para trabalhar com fluxos 16.2.1. Visão geral O módulo io fornece as principais instalações do Python8217 para lidar com vários tipos de IO. Existem três tipos principais de IO: IO de texto. IO binário e IO bruto. Estas são categorias genéricas, e várias lojas de apoio podem ser usadas para cada uma delas. Um objeto concreto pertencente a qualquer uma dessas categorias é chamado de objeto de arquivo. Outros termos comuns são objeto de fluxo e arquivo. Independentemente de sua categoria, cada objeto de fluxo concreto também terá vários recursos: ele pode ser somente leitura, somente gravação ou leitura-escrita. Ele também pode permitir acesso aleatório arbitrário (buscando para frente ou para trás em qualquer local), ou apenas acesso seqüencial (por exemplo, no caso de um soquete ou tubo). Todos os fluxos são cuidadosos sobre o tipo de dados que você forneceu. Por exemplo, dar um objeto str para o método write () de um fluxo binário elevará um TypeError. Então, dará um objeto bytes ao método write () de um fluxo de texto. Alterado na versão 3.3: Operações que costumavam criar o IOError agora aumentam OSError. Já que o IOError é agora um alias do OSError. 16.2.1.1. Texto IO O texto IO espera e produz objetos str. Isso significa que sempre que a loja de suporte é nativa feita de bytes (como no caso de um arquivo), a codificação e decodificação de dados é feita de forma transparente, bem como a tradução opcional de caracteres de linha nova específicos da plataforma. A maneira mais fácil de criar um fluxo de texto é com open (). Opcionalmente especificando uma codificação: os fluxos de texto na memória também estão disponíveis como objetos StringIO: a API do fluxo de texto é descrita detalhadamente na documentação do TextIOBase. 16.2.1.2. IO binário IO binário (também chamado de IO armazenado em buffer) espera bytes-like objects e produz objetos bytes. No encoding, decoding, or newline translation is performed. This category of streams can be used for all kinds of non-text data, and also when manual control over the handling of text data is desired. The easiest way to create a binary stream is with open() with b in the mode string: In-memory binary streams are also available as BytesIO objects: The binary stream API is described in detail in the docs of BufferedIOBase . Other library modules may provide additional ways to create text or binary streams. See socket. socket. makefile() for example. 16.2.1.3. Raw IO Raw IO (also called unbuffered IO ) is generally used as a low-level building-block for binary and text streams it is rarely useful to directly manipulate a raw stream from user code. Nevertheless, you can create a raw stream by opening a file in binary mode with buffering disabled: The raw stream API is described in detail in the docs of RawIOBase . 16.2.2. High-level Module Interface An int containing the default buffer size used by the module8217s buffered IO classes. open() uses the file8217s blksize (as obtained by os. stat() ) if possible. This is an alias for the builtin open() function. exception io. BlockingIOError This is a compatibility alias for the builtin BlockingIOError exception. exception io. UnsupportedOperation An exception inheriting OSError and ValueError that is raised when an unsupported operation is called on a stream. 16.2.2.1. In-memory streams It is also possible to use a str or bytes-like object as a file for both reading and writing. For strings StringIO can be used like a file opened in text mode. BytesIO can be used like a file opened in binary mode. Both provide full read-write capabilities with random access. 16.2.3. Class hierarchy The implementation of IO streams is organized as a hierarchy of classes. First abstract base classes (ABCs), which are used to specify the various categories of streams, then concrete classes providing the standard stream implementations. The abstract base classes also provide default implementations of some methods in order to help implementation of concrete stream classes. For example, BufferedIOBase provides unoptimized implementations of readinto() and readline() . At the top of the IO hierarchy is the abstract base class IOBase. It defines the basic interface to a stream. Note, however, that there is no separation between reading and writing to streams implementations are allowed to raise UnsupportedOperation if they do not support a given operation. The RawIOBase ABC extends IOBase. It deals with the reading and writing of bytes to a stream. FileIO subclasses RawIOBase to provide an interface to files in the machine8217s file system. The BufferedIOBase ABC deals with buffering on a raw byte stream ( RawIOBase ). Its subclasses, BufferedWriter. BufferedReader. and BufferedRWPair buffer streams that are readable, writable, and both readable and writable. BufferedRandom provides a buffered interface to random access streams. Another BufferedIOBase subclass, BytesIO. is a stream of in-memory bytes. The TextIOBase ABC, another subclass of IOBase. deals with streams whose bytes represent text, and handles encoding and decoding to and from strings. TextIOWrapper. which extends it, is a buffered text interface to a buffered raw stream ( BufferedIOBase ). Finally, StringIO is an in-memory stream for text. Argument names are not part of the specification, and only the arguments of open() are intended to be used as keyword arguments. The following table summarizes the ABCs provided by the io module: 16.2.3.1. IO Base Classes The abstract base class for all IO classes, acting on streams of bytes. There is no public constructor. This class provides empty abstract implementations for many methods that derived classes can override selectively the default implementations represent a file that cannot be read, written or seeked. Even though IOBase does not declare read(). readinto(). or write() because their signatures will vary, implementations and clients should consider those methods part of the interface. Also, implementations may raise a ValueError (or UnsupportedOperation ) when operations they do not support are called. The basic type used for binary data read from or written to a file is bytes. Other bytes-like objects are accepted as method arguments too. In some cases, such as readinto(). a writable object such as bytearray is required. Text IO classes work with str data. Note that calling any method (even inquiries) on a closed stream is undefined. Implementations may raise ValueError in this case. IOBase (and its subclasses) supports the iterator protocol, meaning that an IOBase object can be iterated over yielding the lines in a stream. Lines are defined slightly differently depending on whether the stream is a binary stream (yielding bytes), or a text stream (yielding character strings). See readline() below. IOBase is also a context manager and therefore supports the with statement. In this example, file is closed after the with statement8217s suite is finished8212even if an exception occurs: IOBase provides these data attributes and methods: Flush and close this stream. This method has no effect if the file is already closed. Once the file is closed, any operation on the file (e. g. reading or writing) will raise a ValueError . As a convenience, it is allowed to call this method more than once only the first call, however, will have an effect. True if the stream is closed. Return the underlying file descriptor (an integer) of the stream if it exists. An OSError is raised if the IO object does not use a file descriptor. Flush the write buffers of the stream if applicable. This does nothing for read-only and non-blocking streams. Return True if the stream is interactive (i. e. connected to a terminaltty device). Return True if the stream can be read from. If False. read() will raise OSError . Read and return one line from the stream. If size is specified, at most size bytes will be read. The line terminator is always bn for binary files for text files, the newline argument to open() can be used to select the line terminator(s) recognized. Read and return a list of lines from the stream. hint can be specified to control the number of lines read: no more lines will be read if the total size (in bytescharacters) of all lines so far exceeds hint . Note that it8217s already possible to iterate on file objects using for line in file. without calling file. readlines() . Change the stream position to the given byte offset . offset is interpreted relative to the position indicated by whence . The default value for whence is SEEKSET. Values for whence are: SEEKSET or 0 8211 start of the stream (the default) offset should be zero or positive SEEKCUR or 1 8211 current stream position offset may be negative SEEKEND or 2 8211 end of the stream offset is usually negative Return the new absolute position. New in version 3.1: The SEEK constants. New in version 3.3: Some operating systems could support additional values, like os. SEEKHOLE or os. SEEKDATA. The valid values for a file could depend on it being open in text or binary mode. Return True if the stream supports random access. If False. seek(). tell() and truncate() will raise OSError . Return the current stream position. Resize the stream to the given size in bytes (or the current position if size is not specified). The current stream position isn8217t changed. This resizing can extend or reduce the current file size. In case of extension, the contents of the new file area depend on the platform (on most systems, additional bytes are zero-filled). The new file size is returned. Changed in version 3.5: Windows will now zero-fill files when extending. Return True if the stream supports writing. If False. write() and truncate() will raise OSError . Write a list of lines to the stream. Line separators are not added, so it is usual for each of the lines provided to have a line separator at the end. Prepare for object destruction. IOBase provides a default implementation of this method that calls the instance8217s close() method. Base class for raw binary IO. It inherits IOBase. There is no public constructor. Raw binary IO typically provides low-level access to an underlying OS device or API, and does not try to encapsulate it in high-level primitives (this is left to Buffered IO and Text IO, described later in this page). In addition to the attributes and methods from IOBase. RawIOBase provides the following methods: Read up to size bytes from the object and return them. As a convenience, if size is unspecified or -1, readall() is called. Otherwise, only one system call is ever made. Fewer than size bytes may be returned if the operating system call returns fewer than size bytes. If 0 bytes are returned, and size was not 0, this indicates end of file. If the object is in non-blocking mode and no bytes are available, None is returned. Read and return all the bytes from the stream until EOF, using multiple calls to the stream if necessary. Read bytes into a pre-allocated, writable bytes-like object b . and return the number of bytes read. If the object is in non-blocking mode and no bytes are available, None is returned. Write the given bytes-like object. B. to the underlying raw stream, and return the number of bytes written. This can be less than the length of b in bytes, depending on specifics of the underlying raw stream, and especially if it is in non-blocking mode. None is returned if the raw stream is set not to block and no single byte could be readily written to it. The caller may release or mutate b after this method returns, so the implementation should only access b during the method call. class io. BufferedIOBase Base class for binary streams that support some kind of buffering. It inherits IOBase. There is no public constructor. The main difference with RawIOBase is that methods read(). readinto() and write() will try (respectively) to read as much input as requested or to consume all given output, at the expense of making perhaps more than one system call. In addition, those methods can raise BlockingIOError if the underlying raw stream is in non-blocking mode and cannot take or give enough data unlike their RawIOBase counterparts, they will never return None . Besides, the read() method does not have a default implementation that defers to readinto() . A typical BufferedIOBase implementation should not inherit from a RawIOBase implementation, but wrap one, like BufferedWriter and BufferedReader do. BufferedIOBase provides or overrides these methods and attribute in addition to those from IOBase : The underlying raw stream (a RawIOBase instance) that BufferedIOBase deals with. This is not part of the BufferedIOBase API and may not exist on some implementations. Separate the underlying raw stream from the buffer and return it. After the raw stream has been detached, the buffer is in an unusable state. Some buffers, like BytesIO. do not have the concept of a single raw stream to return from this method. They raise UnsupportedOperation . New in version 3.1. Read and return up to size bytes. If the argument is omitted, None. or negative, data is read and returned until EOF is reached. An empty bytes object is returned if the stream is already at EOF. If the argument is positive, and the underlying raw stream is not interactive, multiple raw reads may be issued to satisfy the byte count (unless EOF is reached first). But for interactive raw streams, at most one raw read will be issued, and a short result does not imply that EOF is imminent. A BlockingIOError is raised if the underlying raw stream is in non blocking-mode, and has no data available at the moment. Read and return up to size bytes, with at most one call to the underlying raw stream8217s read() (or readinto() ) method. This can be useful if you are implementing your own buffering on top of a BufferedIOBase object. Read bytes into a pre-allocated, writable bytes-like object b and return the number of bytes read. Like read(). multiple reads may be issued to the underlying raw stream, unless the latter is interactive. A BlockingIOError is raised if the underlying raw stream is in non blocking-mode, and has no data available at the moment. Read bytes into a pre-allocated, writable bytes-like object b . using at most one call to the underlying raw stream8217s read() (or readinto() ) method. Return the number of bytes read. A BlockingIOError is raised if the underlying raw stream is in non blocking-mode, and has no data available at the moment. New in version 3.5. Write the given bytes-like object. B. and return the number of bytes written (always equal to the length of b in bytes, since if the write fails an OSError will be raised). Depending on the actual implementation, these bytes may be readily written to the underlying stream, or held in a buffer for performance and latency reasons. When in non-blocking mode, a BlockingIOError is raised if the data needed to be written to the raw stream but it couldn8217t accept all the data without blocking. The caller may release or mutate b after this method returns, so the implementation should only access b during the method call. 16.2.3.2. Raw File IO FileIO represents an OS-level file containing bytes data. It implements the RawIOBase interface (and therefore the IOBase interface, too). The name can be one of two things: a character string or bytes object representing the path to the file which will be opened. In this case closefd must be True (the default) otherwise an error will be raised. an integer representing the number of an existing OS-level file descriptor to which the resulting FileIO object will give access. When the FileIO object is closed this fd will be closed as well, unless closefd is set to False . The mode can be r. W. x or a for reading (default), writing, exclusive creation or appending. The file will be created if it doesn8217t exist when opened for writing or appending it will be truncated when opened for writing. FileExistsError will be raised if it already exists when opened for creating. Opening a file for creating implies writing, so this mode behaves in a similar way to w. Add a to the mode to allow simultaneous reading and writing. The read() (when called with a positive argument), readinto() and write() methods on this class will only make one system call. A custom opener can be used by passing a callable as opener . The underlying file descriptor for the file object is then obtained by calling opener with ( name . flags ). opener must return an open file descriptor (passing os. open as opener results in functionality similar to passing None ). See the open() built-in function for examples on using the opener parameter. Changed in version 3.3: The opener parameter was added. The x mode was added. Changed in version 3.4: The file is now non-inheritable. In addition to the attributes and methods from IOBase and RawIOBase. FileIO provides the following data attributes: The mode as given in the constructor. The file name. This is the file descriptor of the file when no name is given in the constructor. 16.2.3.3. Buffered Streams Buffered IO streams provide a higher-level interface to an IO device than raw IO does. A stream implementation using an in-memory bytes buffer. It inherits BufferedIOBase. The buffer is discarded when the close() method is called. The optional argument initialbytes is a bytes-like object that contains initial data. BytesIO provides or overrides these methods in addition to those from BufferedIOBase and IOBase : Return a readable and writable view over the contents of the buffer without copying them. Also, mutating the view will transparently update the contents of the buffer: As long as the view exists, the BytesIO object cannot be resized or closed. New in version 3.2. Return bytes containing the entire contents of the buffer. In BytesIO. this is the same as read() . In BytesIO. this is the same as readinto() . New in version 3.5. class io. BufferedReader ( raw . buffersizeDEFAULTBUFFERSIZE ) A buffer providing higher-level access to a readable, sequential RawIOBase object. It inherits BufferedIOBase. When reading data from this object, a larger amount of data may be requested from the underlying raw stream, and kept in an internal buffer. The buffered data can then be returned directly on subsequent reads. The constructor creates a BufferedReader for the given readable raw stream and buffersize . If buffersize is omitted, DEFAULTBUFFERSIZE is used. BufferedReader provides or overrides these methods in addition to those from BufferedIOBase and IOBase : Return bytes from the stream without advancing the position. At most one single read on the raw stream is done to satisfy the call. The number of bytes returned may be less or more than requested. Read and return size bytes, or if size is not given or negative, until EOF or if the read call would block in non-blocking mode. Read and return up to size bytes with only one call on the raw stream. If at least one byte is buffered, only buffered bytes are returned. Otherwise, one raw stream read call is made. class io. BufferedWriter ( raw . buffersizeDEFAULTBUFFERSIZE ) A buffer providing higher-level access to a writeable, sequential RawIOBase object. It inherits BufferedIOBase. When writing to this object, data is normally placed into an internal buffer. The buffer will be written out to the underlying RawIOBase object under various conditions, including: when the buffer gets too small for all pending data when flush() is called when a seek() is requested (for BufferedRandom objects) when the BufferedWriter object is closed or destroyed. The constructor creates a BufferedWriter for the given writeable raw stream. If the buffersize is not given, it defaults to DEFAULTBUFFERSIZE . BufferedWriter provides or overrides these methods in addition to those from BufferedIOBase and IOBase : Force bytes held in the buffer into the raw stream. A BlockingIOError should be raised if the raw stream blocks. Write the bytes-like object. B. and return the number of bytes written. When in non-blocking mode, a BlockingIOError is raised if the buffer needs to be written out but the raw stream blocks. class io. BufferedRandom ( raw . buffersizeDEFAULTBUFFERSIZE ) A buffered interface to random access streams. It inherits BufferedReader and BufferedWriter. and further supports seek() and tell() functionality. The constructor creates a reader and writer for a seekable raw stream, given in the first argument. If the buffersize is omitted it defaults to DEFAULTBUFFERSIZE . class io. BufferedRWPair ( reader . writer . buffersizeDEFAULTBUFFERSIZE ) A buffered IO object combining two unidirectional RawIOBase objects 8211 one readable, the other writeable 8211 into a single bidirectional endpoint. It inherits BufferedIOBase . reader and writer are RawIOBase objects that are readable and writeable respectively. If the buffersize is omitted it defaults to DEFAULTBUFFERSIZE . BufferedRWPair does not attempt to synchronize accesses to its underlying raw streams. You should not pass it the same object as reader and writer use BufferedRandom instead. 16.2.3.4. Text IO Base class for text streams. This class provides a character and line based interface to stream IO. There is no readinto() method because Python8217s character strings are immutable. It inherits IOBase. There is no public constructor. TextIOBase provides or overrides these data attributes and methods in addition to those from IOBase : The name of the encoding used to decode the stream8217s bytes into strings, and to encode strings into bytes. The error setting of the decoder or encoder. A string, a tuple of strings, or None. indicating the newlines translated so far. Depending on the implementation and the initial constructor flags, this may not be available. The underlying binary buffer (a BufferedIOBase instance) that TextIOBase deals with. This is not part of the TextIOBase API and may not exist in some implementations. Separate the underlying binary buffer from the TextIOBase and return it. After the underlying buffer has been detached, the TextIOBase is in an unusable state. Some TextIOBase implementations, like StringIO. may not have the concept of an underlying buffer and calling this method will raise UnsupportedOperation . New in version 3.1. Read and return at most size characters from the stream as a single str. If size is negative or None. reads until EOF. Read until newline or EOF and return a single str. If the stream is already at EOF, an empty string is returned. If size is specified, at most size characters will be read. Change the stream position to the given offset . Behaviour depends on the whence parameter. The default value for whence is SEEKSET . SEEKSET or 0. seek from the start of the stream (the default) offset must either be a number returned by TextIOBase. tell(). or zero. Any other offset value produces undefined behaviour. SEEKCUR or 1. 8220seek8221 to the current position offset must be zero, which is a no-operation (all other values are unsupported). SEEKEND or 2. seek to the end of the stream offset must be zero (all other values are unsupported). Return the new absolute position as an opaque number. New in version 3.1: The SEEK constants. Return the current stream position as an opaque number. The number does not usually represent a number of bytes in the underlying binary storage. Write the string s to the stream and return the number of characters written. class io. TextIOWrapper ( buffer . encodingNone . errorsNone . newlineNone . linebufferingFalse . writethroughFalse ) A buffered text stream over a BufferedIOBase binary stream. It inherits TextIOBase . encoding gives the name of the encoding that the stream will be decoded or encoded with. It defaults to locale. getpreferredencoding(False) . errors is an optional string that specifies how encoding and decoding errors are to be handled. Pass strict to raise a ValueError exception if there is an encoding error (the default of None has the same effect), or pass ignore to ignore errors. (Note that ignoring encoding errors can lead to data loss.) replace causes a replacement marker (such as ) to be inserted where there is malformed data. backslashreplace causes malformed data to be replaced by a backslashed escape sequence. When writing, xmlcharrefreplace (replace with the appropriate XML character reference) or namereplace (replace with N escape sequences) can be used. Any other error handling name that has been registered with codecs. registererror() is also valid. newline controls how line endings are handled. It can be None. . N. R. and rn. It works as follows: When reading input from the stream, if newline is None. universal newlines mode is enabled. Lines in the input can end in n. R. or rn. and these are translated into n before being returned to the caller. If it is . universal newlines mode is enabled, but line endings are returned to the caller untranslated. If it has any of the other legal values, input lines are only terminated by the given string, and the line ending is returned to the caller untranslated. When writing output to the stream, if newline is None. any n characters written are translated to the system default line separator, os. linesep. If newline is or n. no translation takes place. If newline is any of the other legal values, any n characters written are translated to the given string. If linebuffering is True. flush() is implied when a call to write contains a newline character. If writethrough is True. calls to write() are guaranteed not to be buffered: any data written on the TextIOWrapper object is immediately handled to its underlying binary buffer . Changed in version 3.3: The writethrough argument has been added. Changed in version 3.3: The default encoding is now locale. getpreferredencoding(False) instead of locale. getpreferredencoding(). Don8217t change temporary the locale encoding using locale. setlocale(). use the current locale encoding instead of the user preferred encoding. TextIOWrapper provides one attribute in addition to those of TextIOBase and its parents: Whether line buffering is enabled. An in-memory stream for text IO. The text buffer is discarded when the close() method is called. The initial value of the buffer can be set by providing initialvalue . If newline translation is enabled, newlines will be encoded as if by write(). The stream is positioned at the start of the buffer. The newline argument works like that of TextIOWrapper. The default is to consider only n characters as ends of lines and to do no newline translation. If newline is set to None. newlines are written as n on all platforms, but universal newline decoding is still performed when reading. StringIO provides this method in addition to those from TextIOBase and its parents: Return a str containing the entire contents of the buffer. Newlines are decoded as if by read(). although the stream position is not changed. class io. IncrementalNewlineDecoder 16.2.4. Performance This section discusses the performance of the provided concrete IO implementations. 16.2.4.1. Binary IO By reading and writing only large chunks of data even when the user asks for a single byte, buffered IO hides any inefficiency in calling and executing the operating system8217s unbuffered IO routines. The gain depends on the OS and the kind of IO which is performed. For example, on some modern OSes such as Linux, unbuffered disk IO can be as fast as buffered IO. The bottom line, however, is that buffered IO offers predictable performance regardless of the platform and the backing device. Therefore, it is almost always preferable to use buffered IO rather than unbuffered IO for binary data. 16.2.4.2. Text IO Text IO over a binary storage (such as a file) is significantly slower than binary IO over the same storage, because it requires conversions between unicode and binary data using a character codec. This can become noticeable handling huge amounts of text data like large log files. Also, TextIOWrapper. tell() and TextIOWrapper. seek() are both quite slow due to the reconstruction algorithm used. StringIO. however, is a native in-memory unicode container and will exhibit similar speed to BytesIO . 16.2.4.3. Multi-threading FileIO objects are thread-safe to the extent that the operating system calls (such as read(2) under Unix) they wrap are thread-safe too. Binary buffered objects (instances of BufferedReader. BufferedWriter. BufferedRandom and BufferedRWPair ) protect their internal structures using a lock it is therefore safe to call them from multiple threads at once. TextIOWrapper objects are not thread-safe. 16.2.4.4. Reentrancy Binary buffered objects (instances of BufferedReader. BufferedWriter. BufferedRandom and BufferedRWPair ) are not reentrant. While reentrant calls will not happen in normal situations, they can arise from doing IO in a signal handler. If a thread tries to re-enter a buffered object which it is already accessing, a RuntimeError is raised. Note this doesn8217t prohibit a different thread from entering the buffered object. The above implicitly extends to text files, since the open() function will wrap a buffered object inside a TextIOWrapper. This includes standard streams and therefore affects the built-in function print() as well.

No comments:

Post a Comment