スクレイピングはpythonとphpどちらが適しているのでしょか?
youtubeの動画を取得して、独自にランク付けしたいです
>>2
そのレベルでスクレイピングとか100年早い
100年後に質問してくれ >>2
Python
やってる事は裏でseleniumブラウザを立ち上げて
を用意されたapi叩くって事で変わらないんだけど、
文字列の操作がPythonの方が優れてから >>2
スクレイピングに適しているのはJavaScript。 確かにpuppeteer楽だね
selenium導入たいへん
>>5
phpのほうが古くから使われてそうですけどね、この分野では rss取得にはpythonとphpどちらがいいのでしょうか?
1つのサイトを構築する場合、どちらか一方に絞ったほうがいいのですか?
Web系でPython使ったことないんで何か出来ないかなと探したがWebだと別にPython使う必要ないな
スクレイピングした結果をサイト上に表示するというものですが、pythonかphpか分からないです。
フォルダをファイル名に と同じ奴?
コテ付けてくれ
リファレンスじゃなくてチュートリアルのURL貼っといて
リファレンスに描かれてないじゃないか!ってクレーマーω
スクレイピングは、Ruby で、Nokogiri, Selenium WebDriver。
driver.execute_script で、JavaScript のコード(文字列)も実行できる
データベースに保存するなら、Rails をそのまま使うのが速い。
Capybara で、Headless Chrome を使う
どんな言語でもweb driverの扱いが違うだけでgoogle driverを操作だかんね
因みにgoogle driverの挙動が安定しいから辛い
google driverじゃなくてchrome driverだ
>>13
Pythonに決めずに
phpへ出てってどーぞ pcでgui組むのに実装が楽で自由度の高いフレームワークって何ですか?
electronかな。VSCodeもこれで作られてる
>>24に一票w
あとJavaScriptまでならセーフ visualstudio vbやc#の直感的で色々プロパティが揃ってxml形式の似たもの無いかと探してた。
tkinkerは画面配置がgridとreplaceが合わさった要素がなくてちょっと大変さを感じた。
flutterはxmlいじいじ出来るけどちょっと大変さを感じた。
>>25
electron調べてみます。
>>24
>>26
それがimportしてフレームワークオブジェクトとし使えるものはありますか? >>27
くそみそimportと考える前に少しぐぐろうぜw ぶっちゃけおまえにはC#がお似合いだと思うから.Netにどっぷり浸かっとけ
で、さっさとコテつけろや
>>32
追加。
ググったけど分かりませんでした、ではなく、調べたこと考えたことをもとにもっと具体的な質問に落とし込めよ >>29
このクソは
・日に数回質問
・コテハンつけない
・質問の背景を伝えない
・情報を細切れで後出し
・クレクレくんのテイカー
邪魔なのでNGにブチこみたいけどできない
💩🦟 ショッピングモールを歩いてるところを狙って包丁でメッタ刺しにしてやれ
お前らって一生平社員から上がれなさそうだな。
30〜50の人がそんなコメントしてると思うと哀れみ感じるよ
A:他人の痛みが分かる
A-1:痛みを攻撃する
A-2:攻撃しない
B:他人の痛みが分からない
df.loc[df['lr_residue'] > lr.residual_threshold, 'outlier_flag'] = True
この条件式を満たさなかったらFalseを入力したいのですが、どう書けば良いのでしょう?
> お前は毎朝起きるたびに俺に負けたことを思い出すよ^^
あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!
クソチョンw
Pythonさえろくにできないバカチョンのくせに
できるとほざくクソチョンw
日本で強姦と窃盗を繰り返す
犯罪者在日のクソチョンw
>>45
df.loc[df['lr_residue'] <= lr.residual_threshold, 'outlier_flag'] = False >>45
is_outlier = lambda x: x > lr.residual_threshold
df['outlier_flag'] = df['lr_residue'].apply(is_outlier) try exceptで例外に関するメッセージを出すことをしたんだけど、
例外発生時にその後の処理をスキップするにはどうしたらいい?
>>50
returnに1票
pyそのものを終わらせたいならexit()だったっけか https://qiita.com/sssssssiiiiinnn/items/14f7035abe9ce4111323
これの
user_name
user_password
を自分のやつに、
'utf-8':'✓' → "commit":"Qiita+%E3%81%AB%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3"
へ変更
あとはそのままで最後に.textをprintしたけど
ログイン遷移画面のhtmlが出力される
urllib.parse.quoteでログインに必要なパラメータ全部をURIに変換してみたけど
英語ページのログイン遷移画面が返された
そもそもこれでログイン後のページを取得できるのでしょうか?
あとはpost時にcookie渡す方法もちょっと今からやってみます よくよくみたら遷移後のページは
エラーが発生しました (500)
500ページでした
自己解決しました
どうやらname=authenticity_tokenのinput要素が
GitHubでログイン、Twitterでログイン、Googleでログイン、ユーザー名でログイン
の4種類くらいあったみたいです
なのでbs.find(attrs={'name':'authenticity_token'})[-1].get("value")
でユーザー名でログインのauthenticity_tokenを取得してpostしてやればログインできました
お騒がせしました
>>48
>>49
ありがとうございます。
こういうふうにきれいに一行で書けるのってPythonの魅力ですね。 >>52
catchして何もしないというとこんな風に「握りつぶしちゃイカン」という奴が出てくるけど、脊髄反射だよな。 pythonスクレイピングで深い階層をたどる場合、ひたすらrequests.getを繰り返していく感じでいいんでしょうか?
>>62
その前にそこの規約くらい読んどけよ
かつ「適度な負荷」までしとかないと… 64デフォルトの名無しさん2020/09/01(火) 00:18:37.31
スクレイピングの話になると
質問者が負荷を考慮しない前提で決めつけて話するタイプが一定数いるよね
もう性癖なんじゃないのかとすら思う
自身が過去に何かやらかしたとかそういう
>>62
>深い階層をたどる
これが何を意味してるのかと、実現したいことによる
ただそれはpythonかどうかに限らずどの言語でもほぼ同じ 想像だけど、これまではtry exceptしてなかったんでしょう?
元の処理と同じ流れにしたいならexcept内でraiseでないかと
>>64
pythonはじめました → スクレイピングやってみよ
質問してくる奴はほぼ負荷なんて気にしてないレヴェル
pythonは他言語より低レヴェルなプログラマー多いよ >>70
ほらな、この程度。
innertextの中身のチェックくらい入れろってんだよ > お前は毎朝起きるたびに俺に負けたことを思い出すよ^^
あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!
クソチョンw
Pythonさえろくにできないバカチョンのくせに
できるとほざくクソチョンw
日本で強姦と窃盗を繰り返す
犯罪者在日のクソチョンw
迷惑行為に他人を巻き込むな
迷惑行為したいなら自己責任の元、自分の力でやれ
スクレイピングって初心者がよくやりたがる題材だが、初心者こそこういう人に迷惑を掛けうるものに手を出すべきではないな
もっと他のことで基本的な力を身に付けてから手を出した方がいいと思う
トップ>ショッピング>レディースファッションとたどるだけで過剰負荷ってどんだけ貧弱なサーバーなんだよ。
【PHP】下らねぇ質問はここに書き込みやがれ 11
http://2chb.net/r/tech/1591334726/428
上に、Ruby で、RSS ライブラリを使って、yahoo のRSS を取得した、コードを書いておいた
API・RSSなどが公開されているサイトでは、契約してそれを使えばよい
頻繁なスクレイピングは業務妨害になるので、避けるべき!
1日1回なら、たぶん大丈夫
詳しくは、サイトのrobots.txt に書いてある しかもDOMの基本もわかってない人も多いからかえって言語覚えるのには遠回りっていうね
5ch など、ほとんどのサイトは一旦、空のHTML を送ってきてから、Ajax でデータを取得するから、
普通にスクレイピングしても、データが存在しないので取得できない
10秒ぐらい待つとか、Selenium Webdriver を使って、ブラウザを操作する必要がある
特に、yahoo は、ID も少なく、暗号のようなクラス名ばかりで、
解析するのに、かなり苦労する
会社が公開している、API・RSS などを使うべき!
81デフォルトの名無しさん2020/09/01(火) 12:22:02.61
>>71
そんなこと言い出せば
今までITやプログラミングに縁のなかったそこらの一般人がpythonはじめましたなんていうことは確率的に低い >>69
階層だけど、それめちゃ浅くね?
それにトップから辿らなくてもカテゴリのIDはそう変わらないから直接アクセスすればいいんじゃないの?
あとはレディースファッションとかに表示される商品情報はAJAXで取ってきてるから
requestsでやるならXHRのリクエストをWebサイトがやってるのと同じようにやるのと
レスポンスにある各項目の意味を把握しておく必要があるので少し面倒
(そのかわりSeleniumとかのブラウザ操作系に比べれば高速) カテゴリのID は変わらないとか、
暗号のようなクラス名は変わる・変わらないのか、分からないとか、
漏れらは、そのサイトの作者じゃないから、仕様が分からない
答えを推測するしかできないから、
答えを知ってる香具師・作者と比べれば、圧倒的に不利
何回もスクレイピングして、テストしないといけない。
また翌日になれば、クラス名などが変わるかも知れないから、何日間もテストしないといけない
どういうルールで、クラス名などを決めているのか、分からない
だから、クラス名に頼らず、div の下のdiv の、みたいに構造で分析していかないといけない。
ものすごく深いネストを解析するのは、面倒くさい
>>83
APIが提供されているならそっちの方が簡単だよね こういう動画を見れば?
エンジニアチャンネル、粟島
【検証】現役プログラマーは30万円の案件を何時間で出来るのか?
YouTube のスクレイピング。
API を使って、Ruby で1時間
時給30万円! >>81 今は大学で教えてるんじゃないの? 一番教えやすいから。
アメリカだとPython がわかるかどうかが採用条件になってる会社もある。
日本はRuby が普及してたから出遅れてる。 89デフォルトの名無しさん2020/09/01(火) 17:20:10.19
そういうことじゃなくてpython知ってるかどうかやり始めたかどうかはどうでもよく
○○を知らないはず(妄想) → ○○やれよ(確信)、と指摘する
みたいなレッテル貼りの認識が抜けてるってのがおかしいでしょってこと
仮に○○が当たってたとしても、妄想でしかない
エスパーしかこたえるなといったり
今度はエスパーにレッテル貼りといったり
さすが、尻にう●こついてるだけあって
脳の新陳代謝が活発でいそがしいなw
91デフォルトの名無しさん2020/09/01(火) 19:29:55.15
エスパーと説教は違いますよ(笑)
92デフォルトの名無しさん2020/09/01(火) 19:31:53.51
というか今回の件で言えば質問の答えですらないし
統計処理
↓
グラフ出力
のアプリを作成したらコードが600行ぐらいになって非常に見にくくなりました。
こういうときって、統計処理とグラフ出力などをクラスとして分けるべきなのでしょうか?
現在は各処理を関数にしているだけなのですが・・・。
githubに公開するつもりでモジュール化すればおのずと形になりそう
VBAで描いたら6000行は下らないから
pythonで600行なら良く出来た方じゃね
>>99 Python でそんなになるはずないだろ。
統計処理で何をやってるのか知らないけど。matplotlib でグラフを書くだけだろ。 jupyter/scipy-notebook というDocker を使えば、一式揃っているのでは?
1 データ成型
2 統計書
3 グラフ出力
4 画像出力
とやってたら600行越えてちょっとややこしくなってきました。
1〜4の間でやり取りするデータやDFが多いのと、
単なる逐次処理で、クラスにしても内部保持するデータがないのでどうすればいいのかと悩んでます。
モジュール化勉強してみます。
描き捨てならメリット無い
モジュール化して見透しが良くなったりするかも知れないが行数は減らないだろう
すいません。
もう一つ質問なんですが、
関数で引数がなかったら処理1、引数があれば引数をつかった処理2をさせたいときは以下のようなコードをかけば良いのでしょうか?
def show_start_menu(hoge=None):
if (hoge is None):
処理1
else:
print(hoge)
>>105
>if (hoge is None):
>処理1
ここ↑って
if hoge:
処理1
じゃ、イカン何か特別な理由ある?
あと、引数でNoneが渡ってくる可能性は0? >>103
104を読め
そして
おれいをいうとチヌ病気をなおせ def function(*hoge):
def function(**fuga):
def function(*hoge, **fuga):
>>104
見通しがよくなるのがメリットでしょ
書捨てでも600行もあれば見通しが悪いと変更に時間がかかるようになる
それにコードを構造化することで考え方やパターン認識が強化できるから上達も早くなるよ > パターン認識が強化できる
ヒソ( ´・д・)ヒソ(´・д・`)ヒソ(・д・` )ヒソ
>>105
Noneでもいいけどデフォルト値が使えるならそのほうがベター
関数定義時にデフォルト値が定まらず
呼び出し時に動的に評価させたい場合はNoneにする デフォルト引数の =[] でハマる人ですね判ります
>>113
そういうのは一度ハマればいいと思うよ
色んな意味でPythonのレガシーなところを知る取っ掛かりになるから エンバーーーーグ
嫌ぁああああ♪
I will always love youぅううう♪
c#からpython起動するときにcsvファイルのパスを渡したいのですがこういうときってどうやるのでしょう
どうもc#から起動時に飛ばさpythonのに引数としてパスは渡せないっぽい。テキストファイルに書き込んでやり取りがシンプルなのかな
>>117
>飛ばさpythonのに引数としてパスは渡せない
おまえがばぐっとるぞw
なおせ
はなしはそれからだ Notepad++ はauto complete使えるですか?
vs codeが楽なんでしょうけどね
>>123
Notepad++はPythonじゃない件 (設定できる腕前があるようなヤツなら
ぐぐってとっくに使ってるだろJK)
tkinterで
root = tk.Tk()
button = tk.Button(root, text='時系列で分析', width=20,
font=menu_font, command=graph(root))
def graph(root):
としてgraph関数ないでrootから取得した値を使いたいのですが、
button = tk.Button(root, text='時系列で分析', width=20,
font=menu_font, command=graph)
としないと、ボタンを幼くてもgraph(root)が実行されてしまいます。
ボタンを押したら引数を渡して関数を実行させるにはどうしたらいいのでしょう?
>>128
ありがとうございます
引数渡すことは出来ました ボタンが押されたらテキストボックスに入力した名前を習得し、
analyze関数にわたしたいのですが、
# Make text box
txt = tk.Entry(root, width=20)
name = txt.get()
# Button1
button1 = tk.Button(root2, text='1データを分析', width=20,
font=menu_font, command=lambda: analyze(name))
ではうまくいきません。
一つのボタンでテキストボックスの名前取得、関数に引数として渡して実行の2つを行う方法ってないでしょうか?
もしくは
button1 = tk.Button(root, text='1データを分析', width=20,
font=menu_font, command=lambda: analyze(root2))
button1.place(x=120, y=90)
def analyze(root):
name=root.txt.get()
print(name)
みたいな感じでrootを渡してcommandから呼び出した関数でテキストボックスの値を取得して複数の命令を実行したいのです。
すいませんコード修正します。
もしくは
button1 = tk.Button(root, text='1データを分析', width=20,
font=menu_font, command=lambda: analyze(root))
button1.place(x=120, y=90)
def analyze(root):
name=root.txt.get()
print(name)
みたいな感じでrootを渡してcommandから呼び出した関数でテキストボックスの値を取得して複数の命令を実行したいのです。
自分もまだまだ初心者で分からない所あるけど流れからすると
1.画面開く
2.テキスト実装
3.テキストの値取得(空っぽ)
4.ボタンの実装
ボタンを押した時の引数値は2の値
もし、2で正しく値が取れてるなら引数にtxt.get()を渡す。
もしくはnameをglobal宣言
global変数はスコープの関係でのちのちややこしくなるので、定義したくないんですよね。
でもググった例では確かにグローバル変数使ってるんですよね。
GUIのボタンを押したらテキストボックスから値を取得するだけのことなのに、
なんでこんなに難しいんだろう・・・。
この連投カスだけはうまくいかないとざまあと思うわ
C#
Windowsのフォルダパス
スクレイピング
イテレータ
質問をきちんと整理すると
関数内で
1. ウィンドウ、テキストボックス、ボタンを作成
2. ボタンを押したらテキストボックスの値を取得
をしたいのですが、
def sub_menu():
# Make text box
txt = tk.Entry(root, width=20)
# Button1
button1 = tk.Button(root2, text='テキストボックスの値を取得', width=20,
font=menu_font, command=????????)
command=????????
のところでどう記述すればテキストの値を取得できるんでしょう?
>>128
ありがとうございます
引導渡すことは出来ました HTML, jQuery では、
ボタンをクリックすれば、入力コントロールから文字列を取得する
<input type="text" id="Text1" value="あいう">
<button id="Button1">押して</button>
<scr@ipt>
$( "#Button1" ).click( function ( ) {
console.log( inputText = $( "#Text1" ).val( ) )
} )
</scr@ipt>
<scr@ipt> の@ は、5ch に書き込めないので入れたので、無視して
vscodeが重いのですが、軽量エディタあるですか?
補完ありで
>>142
notepad++を自前で補完セッティングする
Py3に対応する設定が完成したら、ぜひ配布してくれ goto文でもグローバル変数でも、神の逆鱗に触れて世界が滅ぶわけでもないので、必要性に応じて適切に使用すればいいよ。
何も考えずに全てgotoだけ、全てグローバル変数だけってのが良くないだけ。
>>145
どっかでPy2用セッティングが配布されてるから
落としてきて改変よろしく async関数内のawait文(コルーチン?)をWhile True文内で定期実行することは難しいのでしょうか?
非同期処理は学習中なのですがいまいちよくわかりませんでした
>>150
python3用は自分で設定するのですか?
あと文法チェックっはないでしょうか?
vccodeのターミナルみたいなやつです
dbgpというのがありますけど >>153
どうも
vim試してみましたが操作が独特すぎたのでnotepadにしときます >>153
pythonに関してはモジュールまでは補完されないようです
デフォルトでは phpの場合はxdebugというのが必要でしょうか?何にしてもデフォルトで文法チェックはできないみたいですね
軽量なのが魅力なんですがね
>>151
vimは一度でもあの操作体系になれちゃうと、それ無しではコード書きたくなくなる程度に中毒性があるから、手を出さない方がいいですよ
慣れちゃった人は新しいエディタ触るときでも無意識に同じ操作体系使えるようになるvisvimみたいなツール探してしまうっていうし TEXTエディタでimport したモジュールの補完までできるのってあるのかな?
Python専用IDEなら当然だが。
>>159
vscodeだったら普通に対応してるぞ
というか導入しやすさ考えるとテキストエディタはほぼvscode一択レベル >>159
jedi-vimだったらimportというか実行環境に登録されてるpathは追ってくれた気がする やっぱvscodeが一番ですよね
しばらく放置したあと、アクティブにするともたつくんですが、ssdにするといいんでしょうか?
放置したあとにもたつくというのは、おそらくデータをhddに退避させているということだと思います。
タスクマネージャを見るとhddへのアクセスが集中しますので(´・ω・`)、、、
ほかのエディタやIDEにVSCodeのRemote Containerと同等の拡張機能が追加されない限り、pythonの開発環境はVSCode一択や
それくらい革命的
辞書型のデータを文字列に変換して出力してるんですけど
キーを囲っているコーテーションがシングルで出力されます
これをダブルコーテーションで出力するにはどうしたら良いんでしょう?
質問です
Pythonをターミナルからファイルで実行して、
実行中に引数を受け渡してプログラムでその引数を受け取ってプログラムの処理を変えるというのはどうしたらできますか?
例えば、
def sum_numbers(x, y)
answer = x + y
return answer
というcalc_numbers.pyというファイルがあって、
ターミナルから python calc_numbers.py 1 1
と実行したあとに
実行中にもう一度 python calc_numbers.py 2 2
とし直して計算結果を変えたいのです
よろしくお願いします
ターミナルで実行(引数a)するとプロセス1が起動します。
例えばループ処理で常駐化した状態でターミナルで最実行(引数b)するとプロセス2が起動するので難しいです。
プロセス間非同期処理まで考慮すれば…ですが初心者には難解です。
代替案として以下の感じですかね?
1.ループ処理:
2.入力待機処理:
3.計算処理
>>166
ん?こういうことかな?
import calc_numbers
rt1 = calc_numbers.sum_numbers(1,1)
print(f'{rt1}')
rt2 = calc_numbers.sum_numbers(2,2)
print(f'{rt2}') df
0 2020/5/21 12:41
1 2020/5/22 12:41
4 2020/5/21 12:41
5 2020/5/21 12:41
6 2020/5/21 12:42
のようなdfで
同一日のデータが複数あるときに時刻が一番後のデータ以外を削除する方法ってないでしょうか
(日付と時刻は一つの列に記載しています)
>>170
考え方としては日付とファイルパスの配列があって
日付をシリアル値に変換ソート
最終日以外はforやイテレタで回して削除は? >>170
新しいdf作って、最大日付のレコードのみコピーじゃダメなの?
どうしても削除しなくちゃダメ? sortしてから
df.drop_duplicates(subset=[‘日付’], keep='last')
>>173
ありがとうございます
duplicate()
使えばできそうと思って悪銭苦闘してましたが、
drpo_duplicate()
なんて便利なものがあったんですね
10行くらいのコードが一行に圧縮されて気持ちいですm(_ _)m もう一つ質問なのですが、
>>170
の日付と時刻が一緒に入ってるデータ列を
日付の列、時刻の列
2つに分ける方法って無いでしょうか? >>174
きもちいのはわかったからもちつけ
つづりまちがっとる
>>175
170の例の通りなら
new_df = df.str.split(' ') > お前は毎朝起きるたびに俺に負けたことを思い出すよ^^
あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!
クソチョンw
Pythonさえろくにできないバカチョンのくせに
できるとほざくクソチョンw
日本で強姦と窃盗を繰り返す
犯罪者在日のクソチョンw
>>176
ああ、昨夜壊れていました・・・
教えていただいた方法で分けられました。
ありがとうございます。 df
date_and_time other
1 2020/5/21 12:41 hoge
2 2020/5/22 12:41 fuga
3 2020/5/21 12:41 fuga
4 2020/5/21 12:41 hoge
5 2020/5/21 12:42 hoge
で時刻と日付を分割したい。
それで
# dfからdate_and_timeだけを切り出して、時刻と日付を分割
df_date_and_time = df['date_and_time']
df_date_and_time=df_date_and_time.str.split(' ')
# 分割したdf_date_and_timeともともとのdfを結合
df_new=pd.merge(df,df_date_and_time)
と結合の箇所でやったのですが、
TypeError: unhashable type: 'list'
というエラーが出ます。どうやって再結合したら良いのでしょう?
>>181
打ち間違いすいません
訂正します
?
と結合の箇所でやったのですが、
TypeError: unhashable type: 'list'
というエラーが出ます。どうやって再結合したら良いのでしょう?
○
とやると分割まではうまくいったのですが、
結合の箇所で
TypeError: unhashable type: 'list'
というエラーが出ます。どうやってdfにdf_date_and_timeを結合したら良いのでしょう? >>181-182
.mergeの引数の説明ちゃんと読んでるか?
なんでもおまえのよきにはからってくっつけてくれるまほうのじゅもん ではないぞ。
.joinについても調べれのこと >>183
キーを指定していないから、結合のしようがないということでしょうか?
df_new = pd.merge(df, df_date_and_time, left_index=True, right_index=True)
同じdfから切り出してきたものだからインデックスの対応は保持されているはずなのでいいのかな >>184
違う
どうしてそこしか読まないんだwww
他にもあるだろいろいろ 関数の中で自分自身の関数を実行するのですが
変数名指定の引数がたくさんあります
def hoge(f,*,a=0,b=0,c=0,d=0,e=0,g=0):
_if f==0:
__f=1
__hoge(f,a=a,b=b,c=c,d=d,e=e,g=g)
__return
_print(a,b,c,d,e,g)
hoge(0,a=1,b=0,c=1,d=0,e=1,g=0)
hoge(f,a=a,b=b,c=c,d=d,e=e,g=g)のように引数は
全て列挙しないといけないのでしょうか?
4行目でhoge(*arguments)みたいにかけたらすっきりするのになと思いました
>>188
NameError: name 'arguments' is not defined
と出たのですが最新版のpythonだと大丈夫なのでしょうか? すみません、もしかして
arguments={a:a,b:b,c:c,d:d,e:e,g:g}を
hoge(f,a=a,b=b,c=c,d=d,e=e,g=g)手前で定義するって意味ではないですよね?
関数の定義文で引数を渡す変数名が指定されていて、再帰的に呼ぶときにhoge(*arguments)みたいに書きたいんだよね?
JavaScript のargumentsのようなものは、Pythonでは使用されないのでは?
キーワード専用引数にする必要がある引数なら、そうするしかないような気がするが。可変長キーワードじゃダメなんでしょ
>>191-192
そうです!
>javascriptのargumentsのような
無理っぽいですかね
根本的に別の方法も何か探ってみることにします
ありがとうございました キーワード引数でデフォルト値を定義しつつ、それらをすべて**kwargsを使うようなイメージでネストした関数に渡したいってことだとおもうけど
デフォルト値を持ったディクショナリを作って受け取ったkwargsをマージさせた結果をネストした関数に渡すくらいしかないんじゃないかな
hoge(1, a=10, z=20)みたいに呼び出した場合のz=20をどうしたいかでも処理が変わる
hoge(f, { a = a, b = b, c = c })とかにすれば
見様見真似でtweepyとかを使ってtwitterのDM botを作りました。
DMが届いたら、そのDMの内容に従って返信をするというものなのですが、
twitterのDMの承認機能のせいで、フォローしていない人からDMが来ると、
そもそもDMを受信したと認識せず、意図した通りに動作しません。
今私が考えられる解決策は、
botにフォローバックさせる機能を追加
↓
一旦DMの送信者にフォローしてもらう
↓
DMを送ってもらう
というオペレーションに変えるというものくらいなのですが、
他に何か良い方法を知ってる人はいないでしょうか?
def hoge(f,**hage):
_if f==0:
__f=1
__hoge(f,**hage)
__return
_print(hage)
hoge(0,a=1,b=0,c=1,d=0,e=1,g=0)
>>198
それだとdef hogeをデバッグするときhoge内で何の引数が使われているか検証し辛くなりません?