[解決済み] 反復可能であるが文字列でない変数の見分け方
2023-01-23 22:21:05
質問
引数を取る関数があるのですが、引数はシングルアイテムかダブルアイテムのどちらかです。
def iterable(arg)
if #arg is an iterable:
print "yes"
else:
print "no"
というように
>>> iterable( ("f","f") ) はい >>> iterable( ["f","f"] ) はい >>> iterable("ff") no
問題は、string は技術的に iterable であるため、次のような場合に ValueError をキャッチできないことです。
arg[1]
. 私はisinstance()を使いたくありません、なぜならそれは良い習慣ではないからです(あるいはそう言われています)。
どのように解決するのですか?
isinstanceを使う(バッドプラクティスである理由がわからない)。
import types
if not isinstance(arg, types.StringTypes):
StringTypesを使用していることに注意してください。 これにより、不明瞭な文字列の型を忘れることがないようにします。
さらに言えば、これは派生した文字列クラスに対しても機能します。
class MyString(str):
pass
isinstance(MyString(" "), types.StringTypes) # true
また、次のようなものもあります。 前の質問 .
乾杯。
NB:
の動作は Python 3 で変更され
StringTypes
と
basestring
は定義されなくなりました。あなたの必要性に応じて、これらを置き換えるために
isinstance
によって
str
のサブセットタプル、または
(str, bytes, unicode)
のサブセット・タプルです。
として
@Theron Luhn
が言及したように、あなたは
six
.
関連
-
[解決済み] Pythonで、あるオブジェクトが反復可能かどうかを判断するにはどうしたらいいですか?
-
[解決済み] 変数を参照渡しする方法を教えてください。
-
[解決済み] 環境変数の値にアクセスする方法
-
[解決済み] 文字列をfloatやintにパースするにはどうしたらいいですか?
-
[解決済み] Pythonで文字列の部分文字列を取得するにはどうすればよいですか?
-
[解決済み] Pythonで文字列を小文字にするには?
-
[解決済み] 文字列が空かどうかを確認する方法は?
-
[解決済み] 文字列にゼロを埋め込むには?
-
[解決済み] 文字列が数値(float)であるかどうかを確認するにはどうすればよいですか?
-
[解決済み] テキストファイルを文字列変数に読み込んで、改行を除去するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] PythonでのAWS Lambdaのインポートモジュールエラー
-
[解決済み] Pythonの要素別タプル演算(sumなど
-
[解決済み] 範囲指定された浮動小数点数のランダムな配列を生成します。
-
[解決済み] Celeryタスクのユニットテストはどのように行うのですか?
-
[解決済み] Flaskで非同期タスクを作る
-
[解決済み] Pandasのデータフレーム内の文字列を'date'データ型に変換するにはどうしたらいいですか?
-
[解決済み] Python 言語を決定するには?
-
[解決済み] Pythonの文字列書式をリストで使う
-
[解決済み] Pythonの文字列の前にあるbという接頭辞は何を意味するのですか?
-
[解決済み] PythonのRequestsモジュールを使ってWebサイトに "ログイン "するには?