Hướng dẫn is empty string the same as none in python? - là chuỗi rỗng giống như không có gì trong python?

Tôi có một ứng dụng hiện có kết nối với cơ sở dữ liệu. Nó đang chạy dưới Python 2.7.

Ứng dụng này không nhất quán trong cách nó sử dụng không và "" để điền vào các biến không có giá trị. Tôi muốn làm cho điều này nhất quán và cố gắng cập nhật mã theo cách này hay cách khác.

Suy nghĩ với tư cách là một người cơ sở dữ liệu, tôi nghĩ không giống như NULL và sẽ cho rằng đó sẽ là lựa chọn chính xác cho các biến số trống nhưng sau đó điều này gây ra vấn đề khi ứng dụng làm những việc như

if variable.upper() == "X":
    #Do something

Vì điều này sẽ gây ra lỗi nếu biến không phải là loại.

tôi có thể làm

if variable is not None and variable.upper() == "X":
    #Do something

Nhưng điều này có vẻ không cần thiết dài dòng.

Có một thực hành tốt nhất cho cách xử lý điều này?

Hướng dẫn is empty string the same as none in python? - là chuỗi rỗng giống như không có gì trong python?

DREFTYMAC

30.5K26 Huy hiệu vàng116 Huy hiệu bạc179 Huy hiệu đồng26 gold badges116 silver badges179 bronze badges

Hỏi ngày 15 tháng 12 năm 2011 lúc 11:50Dec 15, 2011 at 11:50

1

Bạn có thể cắt giảm mã bằng cách viết một chút bằng cách viết

if variable and variable.upper() == "X":
    #Do something

Nếu biến không có hoặc trống, thì nó tương đương với sai.

Đã trả lời ngày 15 tháng 12 năm 2011 lúc 11:52Dec 15, 2011 at 11:52

Obmargobmargobmarg

9.20934 huy hiệu bạc58 Huy hiệu đồng34 silver badges58 bronze badges

if variable and variable.upper() == 'X'

là một chút ít wordy. Nó cũng sẽ đối xử với không và chuỗi trống theo cùng một cách nếu đó là thứ bạn muốn

EDIT: Lưu ý rằng điều này có ngữ nghĩa khác nhau cho biểu thức bạn đã đăng theo cách nó xử lý các chuỗi trống ... tức là trong biểu thức của bạn, RHS của và sẽ được đánh giá nếu biến là chuỗi trống, nhưng trong biểu thức này sẽ không Khi chuỗi trống đánh giá thành

if variable is not None and variable.upper() == "X":
    #Do something
0

Đã trả lời ngày 15 tháng 12 năm 2011 lúc 11:53Dec 15, 2011 at 11:53

Jjwchoyjjwchoyjjwchoy

1.88816 huy hiệu bạc20 Huy hiệu đồng16 silver badges20 bronze badges

Nếu cả

if variable is not None and variable.upper() == "X":
    #Do something
1 hoặc
if variable is not None and variable.upper() == "X":
    #Do something
2 đều sẽ là một tốc ký, nhưng nó chắc chắn không chính xác bằng mã gốc. Tôi sợ bạn sẽ không tốt hơn nhiều, mặc dù.

Bạn có thể làm

def norm(s):
   return s or ''

...
if norm(s) == 'X':

Nhưng cuối cùng nó cũng sẽ không thay đổi nhiều. Có lẽ sự khác biệt ban đầu không quá mâu thuẫn chút nào, mà là rất thực dụng trong bối cảnh?

Đã trả lời ngày 15 tháng 12 năm 2011 lúc 11:54Dec 15, 2011 at 11:54

Alexander Gessleralexander GesslerAlexander Gessler

44,8K6 Huy hiệu vàng80 Huy hiệu bạc122 Huy hiệu đồng6 gold badges80 silver badges122 bronze badges

0

Đối với những người muốn phân biệt

if variable is not None and variable.upper() == "X":
    #Do something
3 với chuỗi trống (
if variable is not None and variable.upper() == "X":
    #Do something
4), hãy sử dụng
if variable is not None and variable.upper() == "X":
    #Do something
5

def is_empty_string(value):
...     return str(value) == ''
...
is_empty_string(None)
False

is_empty_string(0)
False

is_empty_string(' ')
False

is_empty_string('')
True

Đã trả lời ngày 11 tháng 6 năm 2020 lúc 15:36Jun 11, 2020 at 15:36

Chuyển đổi không thành một chuỗi trống trong python #

Sử dụng boolean hoặc toán tử để chuyển đổi không có chuỗi trống trong Python, ví dụ:

if variable is not None and variable.upper() == "X":
    #Do something
6. Boolean hoặc toán tử trả về giá trị bên trái nếu đó là sự thật, nếu không giá trị bên phải được trả về. Vì
if variable is not None and variable.upper() == "X":
    #Do something
3 là một giá trị giả, hoạt động sẽ trả về
if variable is not None and variable.upper() == "X":
    #Do something
8.

Copied!

name = None result = name or "" print(result) # 👉️ ""

Chúng tôi đã sử dụng boolean hoặc toán tử để trả về một chuỗi trống nếu giá trị bên trái là giả.

Tất cả các giá trị không phải là sự thật được coi là giả mạo. Các giá trị giả trong Python là:

  • Các hằng số được xác định là giả mạo:
    if variable is not None and variable.upper() == "X":
        #Do something
    
    3 và
    if variable is not None and variable.upper() == "X":
        #Do something
    
    0.
  • if variable and variable.upper() == "X":
        #Do something
    
    1 (không) thuộc bất kỳ loại số nào
  • Trình tự và bộ sưu tập trống:
    if variable is not None and variable.upper() == "X":
        #Do something
    
    8 (Chuỗi trống),
    if variable and variable.upper() == "X":
        #Do something
    
    3 (Tuple trống),
    if variable and variable.upper() == "X":
        #Do something
    
    4 (danh sách trống),
    if variable and variable.upper() == "X":
        #Do something
    
    5 (Từ điển trống),
    if variable and variable.upper() == "X":
        #Do something
    
    6 (bộ trống),
    if variable and variable.upper() == "X":
        #Do something
    
    7 (phạm vi trống).

Biểu thức

if variable and variable.upper() == "X":
    #Do something
8 trả về giá trị bên trái nếu đó là sự thật, nếu không giá trị bên phải được trả về.

if variable is not None and variable.upper() == "X":
    #Do something
3 là một giá trị giả, nên biểu thức
if variable and variable.upper() == 'X'
0 sẽ luôn trả về
if variable and variable.upper() == 'X'
1.

Lưu ý rằng biểu thức

if variable and variable.upper() == "X":
    #Do something
8 cũng sẽ trả về
if variable and variable.upper() == 'X'
1 nếu
if variable and variable.upper() == 'X'
4 là bất kỳ giá trị giả nào khác, ví dụ:
if variable and variable.upper() == "X":
    #Do something
1,
if variable is not None and variable.upper() == "X":
    #Do something
0 hoặc một danh sách trống, dict hoặc tuple.

Ngoài ra, bạn có thể sử dụng câu lệnh

if variable and variable.upper() == 'X'
7 để kiểm tra xem biến lưu trữ
if variable is not None and variable.upper() == "X":
    #Do something
3 và gán lại nó thành một chuỗi trống.

Copied!

name = None if name is None: name = "" print(name) # 👉️ ""

Kiểm tra

if variable is not None and variable.upper() == "X":
    #Do something
3 rõ ràng hơn nhiều và khối
if variable and variable.upper() == 'X'
7 sẽ chỉ chạy nếu biến lưu trữ giá trị
if variable is not None and variable.upper() == "X":
    #Do something
3.

Điều kiện sẽ không được thỏa mãn nếu biến lưu trữ bất kỳ giá trị giả nào khác.

Bạn cũng có thể sử dụng câu lệnh One-Liner

def norm(s):
   return s or ''

...
if norm(s) == 'X':
2.

Copied!

name = None name = "" if name is None else name print(name) # 👉️ ""

Nếu biến lưu trữ

if variable is not None and variable.upper() == "X":
    #Do something
3, nó sẽ được đặt thành một chuỗi trống, nếu không nó sẽ được đặt thành giá trị hiện tại của nó.

Copied!

name = 'hello' name = "" if name is None else name print(name) # 👉️ "hello"

Chuỗi trống có đánh giá không có trong Python không?

Sử dụng không để kiểm tra xem một chuỗi có trống trong các chuỗi trống Python trong Python được coi là giả mạo hay không, có nghĩa là chúng đánh giá là sai.Empty strings in Python are considered to be falsy, meaning that they evaluate to False .

Chuỗi trống có bằng null python không?

Giá trị null đại diện cho sự vắng mặt của bất kỳ đối tượng nào, trong khi chuỗi trống là một đối tượng của chuỗi loại có ký tự bằng không.Nếu bạn cố gắng so sánh cả hai, chúng không giống nhau.they are not the same.

Chuỗi trống có đúng trong Python không?

Khoa học dữ liệu thực tế bằng cách sử dụng các chuỗi trống Python là "giả", điều đó có nghĩa là chúng được coi là sai trong bối cảnh boolean, vì vậy bạn chỉ có thể sử dụng không chuỗi.Empty strings are "falsy" which means they are considered false in a Boolean context, so you can just use not string.

Chuỗi có trống bằng không?

Một chuỗi trống là một đối tượng chuỗi có giá trị được gán, nhưng độ dài của nó bằng 0.Một chuỗi null không có giá trị nào cả.its length is equal to zero. A null string has no value at all.