1685170620
Одна ошибка, с которой вы можете столкнуться при запуске кода Python:
UnboundLocalError: local variable 'x' referenced before assignment
Эта ошибка обычно возникает, когда вы ссылаетесь на переменную внутри функции без предварительного присвоения ей значения.
Вы также можете увидеть эту ошибку, если забудете передать переменную в качестве аргумента своей функции.
Позвольте мне показать вам пример, который вызывает эту ошибку, и то, как я исправляю ее на практике.
Предположим, у вас есть переменная с именем, nameобъявленная в вашем коде Python следующим образом:
name = "Nathan"
Затем вы создали функцию, которая использует nameпеременную, как показано ниже:
name = "Nathan"
def greet():
name = "Mr. " + name
print("Hello, " + name)
greet()
Когда вы выполните приведенный выше код, вы получите эту ошибку:
File "main.py", line 4, in greet
name = "Mr. " + name
UnboundLocalError: local variable 'name' referenced before assignment
Эта ошибка возникает из-за того, что вы одновременно назначаете и ссылаетесь на переменную, вызываемую nameвнутри функции.
Python думает, что вы пытаетесь присвоить локальную переменную name, nameчто здесь не так, потому что исходная nameпеременная, которую мы объявили, является глобальной переменной.
Чтобы устранить эту ошибку, вы можете изменить имя переменной внутри функции на другое. Например, name_with_titleдолжно работать:
def greet():
name_with_title = "Mr. " + name
print("Hello, " + name_with_title)
В качестве альтернативы вы можете указать nameпараметр в greet()функции, чтобы указать, что вам требуется передать в функцию переменную.
При вызове функции необходимо передать переменную следующим образом:
name = "Nathan"
def greet(name):
name = "Mr. " + name
print("Hello, " + name)
greet(name)
Этот код позволяет Python узнать, что вы собираетесь использовать переменную name, которая передается в качестве аргумента функции как часть вновь объявленной nameпеременной.
Тем не менее, я бы сказал, что вам нужно использовать другое имя при объявлении переменной внутри функции. Использование одного и того же имени может запутать вас в будущем.
Вот лучшее решение ошибки:
name = "Nathan"
def greet(name):
name_with_title = "Mr. " + name
print("Hello, " + name_with_title)
greet(name)
Теперь ясно, что мы используем переменную, nameпереданную функции, как часть значения, присвоенного name_with_title. Путь!
Это UnboundLocalError: local variable 'x' referenced before assignmentпроисходит, когда вы ссылаетесь на переменную внутри функции перед объявлением этой переменной.
Чтобы устранить эту ошибку, вам нужно использовать другое имя переменной при ссылке на существующую переменную или вы также можете указать параметр для функции.
Я надеюсь, что этот учебник будет полезен. Увидимся на других уроках.
Оригинальный источник статьи: https://sebhastian.com/
1685166660
运行 Python 代码时可能遇到的一个错误是:
UnboundLocalError: local variable 'x' referenced before assignment
当您在函数内部引用一个变量而没有先给它赋值时,通常会发生此错误。
当您忘记将变量作为参数传递给函数时,您也可能会看到此错误。
让我向您展示一个导致此错误的示例以及我如何在实践中修复它。
假设您name在 Python 代码中声明了一个名为的变量,如下所示:
name = "Nathan"
接下来,您创建了一个使用name变量的函数,如下所示:
name = "Nathan"
def greet():
name = "Mr. " + name
print("Hello, " + name)
greet()
当你执行上面的代码时,你会得到这个错误:
File "main.py", line 4, in greet
name = "Mr. " + name
UnboundLocalError: local variable 'name' referenced before assignment
name发生此错误是因为您既分配又引用了函数内部调用的变量。
Python 认为你试图将局部变量赋值name给name,这里不是这种情况,因为name我们声明的原始变量是一个全局变量。
要解决此错误,您可以将函数内的变量名称更改为其他名称。例如,name_with_title应该工作:
def greet():
name_with_title = "Mr. " + name
print("Hello, " + name_with_title)
作为替代方法,您可以在函数name中指定一个参数greet(),以指示您需要将变量传递给函数。
调用函数时,需要传递一个变量,如下:
name = "Nathan"
def greet(name):
name = "Mr. " + name
print("Hello, " + name)
greet(name)
此代码允许 Python 知道您打算使用name作为参数传递给函数的变量作为新声明name变量的一部分。
不过,我会说在函数内部声明变量时需要使用不同的名称。使用相同的名称可能会使您将来感到困惑。
这是错误的最佳解决方案:
name = "Nathan"
def greet(name):
name_with_title = "Mr. " + name
print("Hello, " + name_with_title)
greet(name)
现在很明显,我们正在使用name提供给函数的变量作为分配给 的值的一部分name_with_title。干得好!
UnboundLocalError: local variable 'x' referenced before assignment当您在声明该变量之前在函数内部引用该变量时,就会发生这种情况。
要解决此错误,您需要在引用现有变量时使用不同的变量名,或者您也可以为函数指定一个参数。
我希望本教程有用。在其他教程中见。
原始文章来源:https: //sebhastian.com/
1685162423
One error you might encounter when running Python code is:
UnboundLocalError: local variable 'x' referenced before assignment
This error commonly occurs when you reference a variable inside a function without first assigning it a value.
You could also see this error when you forget to pass the variable as an argument to your function.
Let me show you an example that causes this error and how I fix it in practice.
Suppose you have a variable called name
declared in your Python code as follows:
name = "Nathan"
Next, you created a function that uses the name
variable as shown below:
name = "Nathan"
def greet():
name = "Mr. " + name
print("Hello, " + name)
greet()
When you execute the code above, you’ll get this error:
File "main.py", line 4, in greet
name = "Mr. " + name
UnboundLocalError: local variable 'name' referenced before assignment
This error occurs because you both assign and reference a variable called name
inside the function.
Python thinks you’re trying to assign the local variable name
to name
, which is not the case here because the original name
variable we declared is a global variable.
To resolve this error, you can change the variable’s name inside the function to something else. For example, name_with_title
should work:
def greet():
name_with_title = "Mr. " + name
print("Hello, " + name_with_title)
As an alternative, you can specify a name
parameter in the greet()
function to indicate that you require a variable to be passed to the function.
When calling the function, you need to pass a variable as follows:
name = "Nathan"
def greet(name):
name = "Mr. " + name
print("Hello, " + name)
greet(name)
This code allows Python to know that you intend to use the name
variable which is passed as an argument to the function as part of the newly declared name
variable.
Still, I would say that you need to use a different name when declaring a variable inside the function. Using the same name might confuse you in the future.
Here’s the best solution to the error:
name = "Nathan"
def greet(name):
name_with_title = "Mr. " + name
print("Hello, " + name_with_title)
greet(name)
Now it’s clear that we’re using the name
variable given to the function as part of the value assigned to name_with_title
. Way to go!
The UnboundLocalError: local variable 'x' referenced before assignment
occurs when you reference a variable inside a function before declaring that variable.
To resolve this error, you need to use a different variable name when referencing the existing variable, or you can also specify a parameter for the function.
I hope this tutorial is useful. See you in other tutorials.
Original article source at: https://sebhastian.com/
1684948394
Config Variables for your Flutter apps
Plugin that exposes environment variables to your Dart code in Flutter as well as to your native code in iOS and Android.
Inspired by react-native-config
Create a new file .env
in the root of your Flutter app:
API_URL=https://myapi.com
FABRIC_ID=abcdefgh
load all environment varibles in main.dart
import 'package:flutter_config/flutter_config.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized(); // Required by FlutterConfig
await FlutterConfig.loadEnvVariables();
runApp(MyApp());
}
Now you can access your environment varibles anywhere in your app.
import 'package:flutter_config/flutter_config.dart';
FlutterConfig.get('FABRIC_ID') // returns 'abcdefgh'
Keep in mind this module doesn't obfuscate or encrypt secrets for packaging, so do not store sensitive keys in .env
. It's basically impossible to prevent users from reverse engineering mobile app secrets, so design your app (and APIs) with that in mind.
Install the latest version of the plugin
Refer to Android Setup Guide for initial setup and advanced options
No additional setup is required for iOS, however, for advanced usage refer to the iOS Setup Guide
Whenever you need to use FlutterConfig
in your tests, simply use the method loadValueForTesting
import 'package:flutter_config/flutter_config.dart';
void main() {
FlutterConfig.loadValueForTesting({'BASE_URL': 'https://www.mockurl.com'});
test('mock http client test', () {
final client = HttpClient(
baseUrl: FlutterConfig.get('BASE_URL')
);
});
}
Run this command:
With Flutter:
$ flutter pub add flutter_config
This will add a line like this to your package's pubspec.yaml (and run an implicit flutter pub get
):
dependencies:
flutter_config: ^2.0.0
Alternatively, your editor might support flutter pub get
. Check the docs for your editor to learn more.
Now in your Dart code, you can use:
import 'package:flutter_config/flutter_config.dart';
import 'package:flutter/material.dart';
import 'package:flutter_config/flutter_config.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await FlutterConfig.loadEnvVariables();
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
var allValues = <Widget>[];
FlutterConfig.variables.forEach((k, v) {
allValues.add(Text('$k: $v'));
});
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Plugin example app'),
),
body: Center(
child: Column(children: [
...allValues,
SizedBox(
height: 20,
),
Text('Values of fabric Id: ${FlutterConfig.get('FABRIC_ID')}')
])),
),
);
}
}
Download Details:
Author: byneapp.com
Source Code: https://github.com/ByneappLLC/flutter_config
1684777440
Привет, друзья,
В этом уроке мы обсудим, как получить переменную среды в узле js. В этой статье подробно рассказывается о том, как получить переменную среды в node.js. вы узнаете, что node.js получает переменную среды. если вы хотите увидеть пример получения переменной среды node js, то вы находитесь в правильном месте. Следуйте приведенному ниже шагу руководства, чтобы получить переменную среды.
Я приведу вам простой пример получения переменной среды в узле js. В этом примере получите переменную среды, используя пакет dotenv в узле js.
Dotenv — это модуль с нулевой зависимостью, который загружает переменные среды из файла .env в process.env. Хранение конфигурации в среде отдельно от кода основано на методологии The Twelve-Factor App.
Итак, давайте начнем следующий пример:
Шаг 1: Установите Node JS
Этот шаг необязателен; однако, если вы еще не создали приложение node js, вы можете выполнить следующую команду:
mkdir my-app
cd my-app
npm init
Шаг 2: Установите пакет dotenv
npm install dotenv --save
Шаг 3: Создайте файл .env
Создайте файл .env и следующий код:
.env
ENV_MESSAGE = “Hello Welcome to Nicesnippets.com”
Шаг 4: Обновите файл server.js
сервер.js
// require package
require('dotenv').config()
// print env variable
console.log(process.env.ENV_MESSAGE)
Выход:
Hello Welcome to Nicesnippets.com
Я надеюсь, что это может помочь вам ...
Оригинальный источник статьи: https://www.nicesnippets.com/
1684773480
嗨朋友们,
在本教程中,我们将讨论如何在 node js 中获取环境变量。本文详细介绍了如何在 node.js 中获取环境变量。您将学习 node.js 获取环境变量。如果您想查看节点 js 获取环境变量的示例,那么您来对地方了。按照以下教程步骤获取环境变量。
我给大家举个简单的在node js中获取环境变量的例子。在此示例中,使用节点 js 中的dotenv包获取环境变量。
Dotenv 是一个零依赖模块,它将环境变量从 .env 文件加载到 process.env 中。将配置存储在与代码分开的环境中是基于十二因素应用程序方法。
那么让我们开始下面的例子:
第 1 步:安装节点 JS
这一步不是必需的;但是,如果您还没有创建节点 js 应用程序,那么您可以继续执行以下命令:
mkdir my-app
cd my-app
npm init
第 2 步:安装 dotenv 包
npm install dotenv --save
第 3 步:创建 .env 文件
创建 .env 文件和以下代码:
.env
ENV_MESSAGE = “Hello Welcome to Nicesnippets.com”
第 4 步:更新 server.js 文件
服务器.js
// require package
require('dotenv').config()
// print env variable
console.log(process.env.ENV_MESSAGE)
输出:
Hello Welcome to Nicesnippets.com
我希望它可以帮助你...
文章原文出处:https: //www.nicesnippets.com/
1684760520
Hi Friends,
In this tute, we will discuss how to get the environment variable in node js. This article goes into detail on how to get environment variable in node.js. you will learn node.js get environment variable. if you want to see an example of node js get environment variable then you are in the right place. Follow the below tutorial step to get the environment variable.
I will give you a simple example of get the environment variable in node js. In this example get environment variable using dotenv package in node js.
Dotenv is a zero-dependency module that loads environment variables from a .env file into process.env. Storing configuration in the environment separate from code is based on The Twelve-Factor App methodology.
So let's start following example:
Step 1: Install Node JS
This step is not required; however, if you have not created the node js app, then you may go ahead and execute the below command:
mkdir my-app
cd my-app
npm init
Step 2: Install dotenv Package
npm install dotenv --save
Step 3: Create .env File
Create .env file and following code:
.env
ENV_MESSAGE = “Hello Welcome to Nicesnippets.com”
Step 4: Update server.js file
server.js
// require package
require('dotenv').config()
// print env variable
console.log(process.env.ENV_MESSAGE)
Output:
Hello Welcome to Nicesnippets.com
I hope it can help you...
Original article source at: https://www.nicesnippets.com/
1683887820
Чтобы проверить, является ли переменная числом в JavaScript:
Number.isFinite(34) // true
Number.isFinite(2e64) // true
Number.isFinite('0') // false
Number.isFinite(null) // false
Number.isFinite({}) // false
Number.isFinite(Infinity) // false
Number.isFinite(NaN) // false
Number.isFinite(-Infinity) // false
Метод Number.isFinite() был представлен в ES6 для проверки того, является ли заданное значение конечным числом. Возвращает true, если переданное значение является числом, иначе false .
JavaScript также предоставляет глобальную функцию isFinite() , которая преобразует параметр в число и возвращает true , если результирующее значение не является положительным или отрицательным Infinity , NaN или undefined .
Это означает, что с Number.isFinite() только значения типа number и являются конечными, возвращающими true , а нечисловые значения всегда возвращают false :
isFinite('2') // true
Number.isFinite('2') // false
isFinite(null) // true
Number.isFinite(null) // false
В качестве альтернативы вы можете использовать метод Number.isNaN() , чтобы проверить, является ли переданное значение числом и NaN (не числом). Этот метод является более надежной заменой глобальной функции isNaN() в JavaScript.
Number.isNaN(34) // false <-- 34 is a valid number
Number.isNaN(2e64) // false
Number.isNaN('0') // false <-- 0 is a valid number
Number.isNaN(null) // false (false positive?)
Number.isNaN({}) // false
Number.isNaN(Infinity) // false
Number.isNaN(NaN) // true <-- NaN is "Not a Number"
Number.isNaN(-Infinity) // false
В отличие от глобальной функции isNaN() , Number.isNaN() не преобразует аргумент в число ; он возвращает true , если аргумент является числом и имеет значение NaN .
Наконец, оператор typeof также можно использовать для проверки того, является ли тип переменной числом в JavaScript:
typeof 3 === 'number' // true
typeof '0' === 'number' // false ("string" type)
typeof null === 'number' // false
typeof {} === 'number' // false
typeof undefined === 'number' // false
typeof NaN === 'number' // true (false positive?)
typeof Infinity === 'number' // true
Оператор typeof более надежен, чем Number.isNaN() , и он правильно идентифицирует null и undefined не являются числами.
Однако он возвращает true для Infinity и NaN , потому что это специальные числовые значения в JavaScript.
Оригинальный источник статьи: https://attacomsian.com/
1683884040
在 JavaScript 中检查变量是否为数字:
Number.isFinite(34) // true
Number.isFinite(2e64) // true
Number.isFinite('0') // false
Number.isFinite(null) // false
Number.isFinite({}) // false
Number.isFinite(Infinity) // false
Number.isFinite(NaN) // false
Number.isFinite(-Infinity) // false
Number.isFinite ()方法是在 ES6 中引入的,用于检查给定值是否为有限数。如果传递的值是数字,则返回true ,否则返回false。
JavaScript 还提供了一个全局isFinite()函数,该函数将参数转换为Number并在结果值不是正数或负数Infinity、NaN或undefined时返回true。
这意味着,对于Number.isFinite(),只有类型为 number 和 are finite 的值返回true,非数字总是返回false:
isFinite('2') // true
Number.isFinite('2') // false
isFinite(null) // true
Number.isFinite(null) // false
或者,您可以使用Number.isNaN()方法来检查传递的值是否为数字和NaN(不是数字)。此方法是 JavaScript 中全局isNaN()函数的更健壮的替代方法。
Number.isNaN(34) // false <-- 34 is a valid number
Number.isNaN(2e64) // false
Number.isNaN('0') // false <-- 0 is a valid number
Number.isNaN(null) // false (false positive?)
Number.isNaN({}) // false
Number.isNaN(Infinity) // false
Number.isNaN(NaN) // true <-- NaN is "Not a Number"
Number.isNaN(-Infinity) // false
与全局isNaN()函数不同,Number.isNaN()不会将参数转换为Number;当参数为Number且为NaN时,它返回true。
最后,typeof运算符也可用于检查变量类型是否为JavaScript 中的数字:
typeof 3 === 'number' // true
typeof '0' === 'number' // false ("string" type)
typeof null === 'number' // false
typeof {} === 'number' // false
typeof undefined === 'number' // false
typeof NaN === 'number' // true (false positive?)
typeof Infinity === 'number' // true
typeof运算符比Number.isNaN()更健壮,它可以正确识别null和undefined不是数字。
但是,它会为Infinity和NaN返回true,因为它们是 JavaScript 中的特殊数值。
文章原文出处:https: //attacomsian.com/
1683883045
Чтобы проверить, определена или инициализирована ли переменная в JavaScript:
let a,
b = 5
if (typeof a !== 'undefined') {
console.log(`Variable a is defined`)
}
if (typeof b !== 'undefined') {
console.log(`Variable b is defined`)
}
// Output => Variable b is defined
Первый оператор не выполняется, потому что переменная a объявлена, но ей не присвоено значение. Поэтому ему автоматически присваивается значение undefined .
Второй оператор выполняется, потому что переменная b объявлена и инициализирована значением 5 .
Оператор typeof , в отличие от других операторов, не генерирует исключение ReferenceError при использовании с необъявленной переменной:
// => Attempt to access an undeclared `c` variable
if (typeof c !== 'undefined') {
console.log(`Variable c is defined`)
}
// => Throws ReferenceError: c is not defined
if (c !== 'undefined') {
console.log(`Variable c is defined`)
}
// => Throws ReferenceError: c is not defined
if (c) {
console.log(`Variable c is defined`)
}
Однако оператор typeof вызовет исключение, если вы используете оператор typeof перед объявлением переменной с помощью let или const , как показано ниже:
// => Throws ReferenceError: Cannot access 'c' before initialization
if (c !== 'undefined') {
console.log(`Variable c is defined`)
}
let c = 10
Оригинальный источник статьи: https://attacomsian.com/
1683879300
检查变量是否在 JavaScript 中定义或初始化:
let a,
b = 5
if (typeof a !== 'undefined') {
console.log(`Variable a is defined`)
}
if (typeof b !== 'undefined') {
console.log(`Variable b is defined`)
}
// Output => Variable b is defined
第一条语句不会执行,因为变量a已声明但未赋值。因此,它会自动分配值undefined。
第二条语句被执行是因为变量b被声明并初始化为值5。
与其他运算符不同, typeof运算符在与未声明的变量一起使用时不会抛出ReferenceError异常:
// => Attempt to access an undeclared `c` variable
if (typeof c !== 'undefined') {
console.log(`Variable c is defined`)
}
// => Throws ReferenceError: c is not defined
if (c !== 'undefined') {
console.log(`Variable c is defined`)
}
// => Throws ReferenceError: c is not defined
if (c) {
console.log(`Variable c is defined`)
}
但是,如果在使用let或const声明变量之前使用 typeof 运算符,则typeof运算符会抛出异常,如下所示:
// => Throws ReferenceError: Cannot access 'c' before initialization
if (c !== 'undefined') {
console.log(`Variable c is defined`)
}
let c = 10
文章原文出处:https: //attacomsian.com/
1683865506
To check if a variable is a number in JavaScript:
Number.isFinite(34) // true
Number.isFinite(2e64) // true
Number.isFinite('0') // false
Number.isFinite(null) // false
Number.isFinite({}) // false
Number.isFinite(Infinity) // false
Number.isFinite(NaN) // false
Number.isFinite(-Infinity) // false
The Number.isFinite() method was introduced in ES6 to check if the given value is a finite number. It returns true if the passed value is a number, otherwise false.
JavaScript also provides a global isFinite() function that converts the parameter to a Number and returns true if the resulting value is not positive or negative Infinity, NaN, or undefined.
This means, with Number.isFinite(), only values of the type number and are finite return true, and non-numbers always return false:
isFinite('2') // true
Number.isFinite('2') // false
isFinite(null) // true
Number.isFinite(null) // false
Alternatively, you can use the Number.isNaN() method to check if the passed value is a Number and NaN (Not a Number). This method is a more robust replacement of the global isNaN() function in JavaScript.
Number.isNaN(34) // false <-- 34 is a valid number
Number.isNaN(2e64) // false
Number.isNaN('0') // false <-- 0 is a valid number
Number.isNaN(null) // false (false positive?)
Number.isNaN({}) // false
Number.isNaN(Infinity) // false
Number.isNaN(NaN) // true <-- NaN is "Not a Number"
Number.isNaN(-Infinity) // false
Unlike the global isNaN() function, Number.isNaN() does not convert the argument to a Number; it returns true when the argument is a Number and is NaN.
Finally, the typeof operator can also be used to check if the variable type is a number in JavaScript:
typeof 3 === 'number' // true
typeof '0' === 'number' // false ("string" type)
typeof null === 'number' // false
typeof {} === 'number' // false
typeof undefined === 'number' // false
typeof NaN === 'number' // true (false positive?)
typeof Infinity === 'number' // true
The typeof operator is more robust than Number.isNaN() and it correctly identifies null and undefined are not numbers.
However, it returns true for Infinity and NaN because these are special number values in JavaScript.
Original article source at: https://attacomsian.com/
1683861137
To check if a variable is defined or initialized in JavaScript:
let a,
b = 5
if (typeof a !== 'undefined') {
console.log(`Variable a is defined`)
}
if (typeof b !== 'undefined') {
console.log(`Variable b is defined`)
}
// Output => Variable b is defined
The first statement does not execute because the variable a is declared but not assigned a value. Therefore, it is automatically assigned the value undefined.
The second statement gets executed because the variable b is declared and initialized with a value 5.
The typeof operator, unlike the other operators, does not throw a ReferenceError exception when used with a variable that is not declared:
// => Attempt to access an undeclared `c` variable
if (typeof c !== 'undefined') {
console.log(`Variable c is defined`)
}
// => Throws ReferenceError: c is not defined
if (c !== 'undefined') {
console.log(`Variable c is defined`)
}
// => Throws ReferenceError: c is not defined
if (c) {
console.log(`Variable c is defined`)
}
However, the typeof operator would throw an exception if you use the typeof operator before declaring a variable with let or const, as shown below:
// => Throws ReferenceError: Cannot access 'c' before initialization
if (c !== 'undefined') {
console.log(`Variable c is defined`)
}
let c = 10
Original article source at: https://attacomsian.com/
1683395580
Python предоставляет четыре варианта вставки переменной в строку:
Этот учебник покажет вам примеры того, как использовать четыре вышеперечисленных параметра на практике.
Форматированный строковый литерал или формат f-строки — лучший способ вставки переменных в строку, потому что он интуитивно понятен и красиво написан.
Чтобы использовать формат f-строки, вам нужно всего лишь добавить литерал fперед строкой, которую вы хотите написать. Вот пример вставки nameи ageпеременных в строку:
name = "Nathan"
age = 29
my_str = f"I'm {name} and I'm {age} years old."
print(my_str)
Выход:
I'm Nathan and I'm 29 years old.
Как видите, эта опция интуитивно понятна, потому что вы можете вставить переменную прямо в строку, просто добавив {}вокруг переменной фигурные скобки.
Но имейте в виду, что эта опция доступна только в Python версии 3.6 и выше. Если вам нужна поддержка более старых версий Python, вам нужно использовать другие параметры.
Этот str.format()метод является популярным вариантом для вставки переменной в строку перед добавлением формата f-строки.
При использовании этой опции вам нужно добавить фигурные скобки в строку {}, которая будет заменена значениями, которые вы передали методу format().
Вот пример использования str.format()метода:
name = "Nathan"
age = 29
my_str = "I'm {} and I'm {} years old.".format(name, age)
print(my_str)
Выход:
I'm Nathan and I'm 29 years old.
Python прочитает строку и вставит переменные, указанные вами в качестве format()аргументов, в фигурные скобки, добавленные в строку.
Этот подход довольно интуитивен, но формат f-строки явно лучше.
Другой вариант вставки переменных в строку — использование %оператора.
При использовании этой опции вам необходимо включить оператор, %за которым следует спецификатор формата, чтобы сообщить Python, как следует вставлять переменные.
К концу строки вам нужно добавить еще один %оператор и указать значения, которые вы хотите поместить в строку. См. пример ниже:
name = "Nathan"
age = 29
my_str = "I'm %s and I'm %s years old." % (name, age)
print(my_str)
Выход:
I'm Nathan and I'm 29 years old.
Как видите, %sв строку включены два формата, которые затем заменяются двумя значениями, написанными после строки.
Этот подход менее интуитивен, потому что формат выглядит как магические заклинания, но он работает со старыми версиями Python, поэтому вы можете увидеть, что он часто используется в устаревшем исходном коде.
Последний способ вставить переменную в строку — использовать +оператор конкатенации.
Чтобы использовать эту опцию, вам нужно разорвать строку и вставить переменную с помощью оператора конкатенации следующим образом:
name = "Nathan"
age = 29
my_str = "I'm " + name + " and I'm " + str(age) + " years old."
print(my_str)
Выход:
I'm Nathan and I'm 29 years old.
Одним из недостатков этого метода является то, что Python выдает ошибку при объединении нестрокового типа со строкой.
Вам нужно преобразовать любую нестроковую переменную в строку с помощью str()функции, чтобы Python мог объединить их вместе.
Эта опция также не позволяет вам форматировать вывод, как в трех других опциях, так что это хорошо, когда вы просто хотите распечатать значения переменных.
Python предоставляет четыре различных способа вставки переменной в строку. Формат f-строки — это последнее улучшение, доступное в Python версии 3.6 и выше. В настоящее время это лучший способ вставить переменную в строку.
Если вам нужна поддержка более старых версий Python, вы можете использовать любые другие три параметра в своем коде.
Я надеюсь, что это руководство будет полезным. Удачного кодирования! 👍
Оригинальный источник статьи: https://sebhastian.com/
1683391860
Python 为您提供了四种将变量插入字符串的选项:
本教程将向您展示如何在实践中使用上述四个选项的示例。
格式化字符串文字或 f 字符串格式是将变量插入字符串的最佳方式,因为它直观且编写精美。
要使用f-string格式,你只需要f在你要写的字符串前加一个文字即可。name以下是将变量和age变量插入字符串的示例:
name = "Nathan"
age = 29
my_str = f"I'm {name} and I'm {age} years old."
print(my_str)
输出:
I'm Nathan and I'm 29 years old.
{}如您所见,此选项很直观,因为您只需在变量周围添加大括号即可将变量直接插入到字符串中。
但请记住,此选项仅在 Python 3.6 及更高版本中可用。如果需要支持旧的 Python 版本,则需要使用其他选项。
该str.format()方法是在添加 f 字符串格式之前将变量插入字符串的流行选项。
使用此选项时,您需要在字符串中添加大括号,{}该字符串将替换为您传递给format()方法的值。
下面是使用该方法的示例str.format():
name = "Nathan"
age = 29
my_str = "I'm {} and I'm {} years old.".format(name, age)
print(my_str)
输出:
I'm Nathan and I'm 29 years old.
Python 将读取字符串并将您指定为format()参数的变量插入到字符串中添加的大括号中。
这种方法非常直观,但 f 字符串格式显然更好。
将变量插入字符串的另一种选择是使用%运算符。
使用此选项时,您需要在%运算符后跟一个格式说明符,让 Python 知道应该如何插入变量。
在字符串的末尾,您需要添加另一个%运算符并指定要放入字符串中的值。请参见下面的示例:
name = "Nathan"
age = 29
my_str = "I'm %s and I'm %s years old." % (name, age)
print(my_str)
输出:
I'm Nathan and I'm 29 years old.
如您所见,%s字符串中包含两种格式,然后替换为写入字符串后的两个值。
这种方法不太直观,因为格式看起来像魔法咒语,但它适用于较旧的 Python 版本,因此您可能会看到它在遗留源代码中经常使用。
将变量插入字符串的最后一个选项是使用连接运算+符。
要使用此选项,您需要断开字符串并使用连接运算符插入变量,如下所示:
name = "Nathan"
age = 29
my_str = "I'm " + name + " and I'm " + str(age) + " years old."
print(my_str)
输出:
I'm Nathan and I'm 29 years old.
此方法的一个弱点是,当您将非字符串类型连接到字符串时,Python 会引发错误。
您需要使用该str()函数将任何非字符串变量转换为字符串,以便 Python 可以将其连接在一起。
此选项也不允许您像其他三个选项一样格式化输出,因此当您只想打印变量值时它很好。
Python 提供了四种不同的方法来将变量插入到字符串中。f 字符串格式是 Python v3.6 及更高版本中可用的最新改进。目前,这是将变量插入字符串的最佳方式。
如果您需要支持旧的 Python 版本,您可以在代码中使用任何其他三个选项。
我希望本教程对您有所帮助。编码愉快!👍
原始文章来源:https: //sebhastian.com/