Nó có thể là một câu hỏi cơ bản bởi vì tôi bắt đầu học tự học với cuốn sách Think Python. Và có một bài tập mà tôi không im lặng theo dõi lý do tại sao không in chuỗi thẻ, thay vào đó nó in một địa chỉ bộ nhớ.
Đây là toàn bộ mã:
import random
class Card[object]:
'''Represents a standard playing card'''
def __init__[self, suit=0, rank=2]:
self.suit = suit
self.rank = rank
suit_names = ['Clubs', 'Diamonds', 'Hearts', 'Spades']
rank_names = [None, 'Ace', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'Jack', 'Queen', 'King']
def __str__[self]:
return '%s of %s' % [Card.rank_names[self.rank], Card.suit_names[self.suit]]
def __cmp__[self, other]:
t1= self.suit, self.rank
t2 = other.suit, other.rank
return cmp[t1, t2]
class Deck[object]:
def __init__[self]:
self.cards = []
for suit in range[4]:
for rank in range[1,14]:
card = Card[suit, rank]
self.cards.append[card]
def __str__[self]:
res = []
for card in self.cards:
res.append[str[card]]
return '\n'.join[res]
def pop_card[self]:
return self.cards.pop[]
def add_card[self, card]:
self.cards.append[card]
def shuffle[self]:
random.shuffle[self.cards]
def sort[self]:
self.cards.sort[]
def move_card[self, hand, num]:
for i in range[num]:
hand.add_card[self.pop_card[]]
def deal_hands[self, _cards, hands]:
handsdeal = []
for i in range[hands]:
hand = Hand[]
self.move_card[hand, _cards]
handsdeal.append[hand.cards]
return handsdeal
class Hand[Deck]:
def __init__[self, label='']:
self.cards = []
self.label = label
Hãy để tôi giải thích:
Tôi gọi phương thức Deal_Hands với boong j [j = boong []] và _cards = 2 và tay = 3. Kết quả là danh sách bàn tay nhưng khi tôi in danh sách đó, tôi nhận được danh sách với danh sách như dự định nhưng với địa chỉ bộ nhớ xấu xí như các yếu tố. Tại sao điều này xảy ra và làm thế nào nó có thể được sửa chữa?
STR cũng nên được sử dụng bằng tay, phải không? should be used by Hand too, right?
Xem thảo luận
Cải thiện bài viết
Lưu bài viết
Xem thảo luận
Cải thiện bài viết
Lưu bài viết
Đọc
Bàn luận
Trong Python, mọi thứ đều là một đối tượng, từ các biến đến danh sách và từ điển, mọi thứ đều được coi là đối tượng. & NBSP; Trong bài viết này, chúng ta sẽ lấy địa chỉ bộ nhớ của một đối tượng trong Python. & NBSP;
Syntax:
id[object]
Phương pháp 1: Sử dụng ID []
Chúng ta có thể nhận được một địa chỉ bằng hàm id []. Hàm id [] cung cấp địa chỉ của đối tượng cụ thể.Python program to get the address of different objects
Python3
a
=
[
1
,
____________,
3
____5____5____10____5____a
2
a
4a
5a
6a
7
a
=
=
0
a
4a
5a
6a
7
a
=
a
51
,
____________,
3
____5____5____10____5__12
a
4a
5a
6a
7
a
=
1
41
51
61
,
____491
6____________,
2
a
4a
5a
6a
7
Output:
140234866534752
94264748411744
140234904267376
140234866093264
Làm cách nào để in một địa chỉ bộ nhớ trong Python?
Sử dụng ID [] để lấy địa chỉ bộ nhớ của một đối tượng.
Syntax:
addressof[c_int[object]]
an_object = {"A": 1}.
object_id = id [an_object]. Python program to get the memory address of a variable
Python3
Hàm Python trả về địa chỉ bộ nhớ của một đối tượng là gì?
Bạn sẽ cần một vài công cụ từ Thư viện tiêu chuẩn Python: id [] trả về địa chỉ bộ nhớ của đối tượng.
a
42
5
Output:
140234866278064
Làm thế nào để Python truy cập bộ nhớ?
Syntax:
hex[id[object]]
where,
- hex [] là đại diện thập lục phân của bộ nhớ đến địa chỉ
- ID được sử dụng để có được bộ nhớ của đối tượng
- Đối tượng là dữ liệu
Ví dụ: Chương trình Python để có được địa chỉ bộ nhớ trong biểu diễn thập lục phân. Python program to get the memory address in hexadecimal representation.
Python3
a
=
[
1
,
____________,
3
____5____5____10____5____a
2
a
4a
53
1a
5a
63
4
a
=
=
0
a
4a
53
1a
5a
63
4
a
=
a
51
,
____________,
3
____5____5____10____5__12
a
4a
53
1a
5a
63
4
a
=
1
41
51
61
,
____491
6____________,
2
a
4a
53
1a
5a
63
4
Output:
0x7fba9b0ae8c0
0x5572da858b60
0x7fba9f3c4a10
0x7fba9b05b8c0