くだすれPython(超初心者用) その41【Ruby禁止】

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2019/02/04(月) 21:22:10.08ID:9MrdxUVg
★当スレにRubyのソースコード類を書くことを禁ず
☆Ruby等、Pythonではないプログラミング言語での回答類を書くことも禁ず

このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますが、お礼は Python の布教と初心者の救済をお願いします。

エラーを解決したいときはエラー表示や環境(バージョン/IDEまたはcommand line/OS)を略さずに書き込んで下さい。
騙りが頻発しています。質問する方は一時的なトリップをつけることを検討して下さい。
次スレは >>985 辺りで

前スレ
くだすれPython(超初心者用) その40
http://mevius.5ch.net/test/read.cgi/tech/1542874174/


◆PythonのHome Page
http://www.python.org/

◆まとめwiki
ttp://python.rdy.jp/

◆Pythonのソースコードをそのまま5ちゃんにコピペすると
  インデントが崩れるので
  こういうところ↓にはってきてください
ttp://ideone.com/      Pythonするにはぷち手間あるのがめんどうかなぁ
ttp://codepad.org/      ほぼ直感的に使える。Run codeボタンあり。
ttp://pastebin.com/     まずまずシンプル。
ttp://dpaste.com/      とてもシンプル。消えるまでの日数を長めに指定しる。
ttps://jupyter.org/try    (旧try.jupyter.org)ちょっとめんどうそう
ttps://ja.osdn.net/pastebin/ ログイン必須になりやがった(゚Д゚#)
−−−−天麩羅ここまで−−−−
2019/03/05(火) 20:41:40.15ID:7lWO2Eg6
>>527
https://docs.python.org/ja/3/library/decimal.html
2019/03/05(火) 20:49:10.69ID:/6VFWsqW
>>524
ソースコード見る限りImageGrab.grab()がimageを返しそうだから
frame_pre = ImageGrab.grab()

frame_next = ImageGrab.grab()
として
saveの行とimreadの行を削除してみたらどう?
2019/03/05(火) 20:58:16.68ID:CbSwC66k
>>527 f文字列を使ったら?

print(x,y, f'{x-y:.1f}' )
# 小数点以下1桁表示
2019/03/05(火) 21:03:22.55ID:yUBkGE+g
"%s" % "foo"
この%ってprintfみたいな感じと思うのですが、
これはなんというのでしょうか?
2019/03/05(火) 21:11:42.23ID:/6VFWsqW
>>529

>>526の言う通りnp.asarrayでキャストしないとエラー出た
つまり

frame_pre = np.asarray(ImageGrab.grab())

とする
2019/03/05(火) 22:16:33.26ID:fIhIM0AX
>>531
廃棄物や老害とでも呼べばいいんじゃないかな
Python3で非推奨になった時代遅れの演算子だから今すぐに忘れなさい
2019/03/05(火) 22:40:50.70ID:apIwEZzG
>>528 奥が深いんですね 考慮しなきゃいけない事色々あって嵌りそう

>>530 当面f文字列で対応してみます

ありがとうございます!
2019/03/05(火) 22:43:50.05ID:yUBkGE+g
>>533
非推奨なんですね、ありがとうございます
536デフォルトの名無しさん
垢版 |
2019/03/05(火) 22:50:11.98ID:7Yqzn8cc
>>535
代わりにformat()使おうね
537デフォルトの名無しさん
垢版 |
2019/03/05(火) 23:09:19.30ID:gSGf6yDl
a = [d * 2 for d in 'abcde']
print(a)

abcdeを5こずつ表示とかってできますか?
2019/03/05(火) 23:23:03.46ID:eDzk8k/k
abcdeを5こずつ表示って
abcde abcde abcde abcde abcde
abcde abcde abcde abcde abcde
.....
と表示したいってことか?
539デフォルトの名無しさん
垢版 |
2019/03/06(水) 00:06:23.49ID:3F/qov+q
>>538
はいです
540デフォルトの名無しさん
垢版 |
2019/03/06(水) 00:10:06.28ID:XQpJaTFA
インタプリンタでこれ実行したらFalseなんですけど何をもってFalseと判断してるのか分かりません
(1,3,5) < (1,2,7)
2019/03/06(水) 00:10:39.87ID:R/1sU7PR
分岐のコメントってifの上か下、どちらが良いでしょうか

# 処理内容はxxx
if flg
# 処理内容はxxx
処理内容…
2019/03/06(水) 00:55:19.44ID:oR6mPeK7
>>540
そうですか
543デフォルトの名無しさん
垢版 |
2019/03/06(水) 00:56:10.88ID:3F/qov+q
>>540
falseになる理由を教えてください
2019/03/06(水) 00:59:18.54ID:PXi0ytZJ
>>543
前から順番に比較していって同じなら次を比較し、異なるならそこで結果を返す

この場合は3と2を比較して3 < 2 は False となる
545デフォルトの名無しさん
垢版 |
2019/03/06(水) 01:37:14.91ID:Wfp2djOX
>>540
(a,b,c) < (d,e,f) は a<d or b<e or c<f と同じ
2019/03/06(水) 02:12:47.95ID:ctS44w1M
お前ら嘘ばっか教えるんじゃないよ
(1,3,5) < (1,2,7)

135 < 127の比較、当然 135がデカいからFalse
>>540 絶対、信じろ
2019/03/06(水) 02:23:21.55ID:Uli2bEJM
>>537-539
Ruby なら文字列に、掛け算(*)演算子も定義されているから、これだけ

puts "abc" * 3
#=> abcabcabc
2019/03/06(水) 05:37:29.57ID:MPL4boGu
リスト内を小さい順に並び替えて行く処理を書いてみた。

https://ideone.com/iK3JYA

上記ソースをリスト内包表現で実現できそうで色々試したりしましたがうまく行きませんでした。
もしリスト内包表現で表現できるならどう書けばよいのかご提示宜しくお願いします。
2019/03/06(水) 05:37:46.06ID:A0Y4tMZt
>>545

>>> (1,3,5) < (1,2,7)
False
>>> 1<1 or 3<2 or 5<7
True

>>546

>>> (1,3,5) < (1,2,7,9)
False
>>> 135 < 1279
True
550デフォルトの名無しさん
垢版 |
2019/03/06(水) 07:42:57.04ID:3F/qov+q
>>544
>>545
>>549
ありがとうございます。
理解できました
2019/03/06(水) 08:25:20.58ID:bBth0ZZS
>>540 正式ドキュメントのチュートリアル 5.8に詳しく書いてある。
要素を最初から辞書的に1つずつ比較。片方の要素がなくなれば終わり。
適切な比較順序がない場合は、インタープリターは TypeError 例外を発生させます。

(1, 2, 3) < (1, 2, 4)
[1, 2, 3] < [1, 2, 4]
'ABC' < 'C' < 'Pascal' < 'Python'
(1, 2, 3, 4) < (1, 2, 4)
(1, 2) < (1, 2, -1)
(1, 2, 3) == (1.0, 2.0, 3.0)
(1, 2, ('aa', 'ab')) < (1, 2, ('abc', 'a'), 4)

(1,2,3)<(1,'2',4) は、エラーになる。
2019/03/06(水) 08:51:37.17ID:f/NWPYTA
>>547
死ね
2019/03/06(水) 11:29:05.92ID:R/1sU7PR
withってどういう時に使うのが良いでしょうか
明示的に「これを中心にしたブロックです」と言いたいということでしょうか
変数に入れるのではダメですか?
554デフォルトの名無しさん
垢版 |
2019/03/06(水) 12:44:10.04ID:qZuvgmSh
>>553
例えばファイルの読み書きの時
withを使うとブロックを抜けた時に自動でcloseされる
途中でエラーが出てもちゃんとcloseしてくれる

自前のクラスでも__enter__()と__exit__()を実装しておくとwithに入る時と出る時に呼び出されるので、前処理と後処理を忘れずにしたい時に使える
2019/03/06(水) 12:47:48.19ID:R/1sU7PR
>>554
ありがとうございます
これは便利ですね
556デフォルトの名無しさん
垢版 |
2019/03/06(水) 12:58:50.97ID:pP8e2GTT
>>> [print(f'u{ord(_):04x}') for _ in 'いろは']
u3044
u308d
u306f
[None, None, None]

>>> [print(f'{_:02x}') for _ in 'いろは'.encode('utf-8')]
e3
81
84
e3
82
8d
e3
81
af
[None, None, None, None, None, None, None, None, None]
2019/03/06(水) 16:16:53.92ID:w73Hgmg1
>>554
C#のusingと理解すればよき?
2019/03/06(水) 17:10:04.23ID:+4ROOaYr
>>556 _ って何を表してるんだろうと思ったら、_ 1文字でも変数名として使えるんだね。
こう言う使い方は良いね。
2019/03/06(水) 18:21:37.77ID:kGjUBYU2
>>537-539
import sys
d='abcde'
c=0
while 1:
  sys.stdout.write(d)
  c+=1
  if c % 5 == 0:
    sys.stdout.write('\n')
  else:
    sys.stdout.write(' ')
2019/03/06(水) 18:57:59.23ID:2Etc0l5z
>>559 何でそんなしち面倒臭いことするの? そもそもstdoutなんて必要ないだろ。 それに無限ループは絶対にダメ。
そんなことするくらいなら、それこそ

print(' abcde '*5, '\n ')
で済む話。 複数行にしたければお好きなだけループで回せば良い。
2019/03/06(水) 19:18:18.39ID:kGjUBYU2
>>560
printつかうと余計な改行はいるだろ
562デフォルトの名無しさん
垢版 |
2019/03/06(水) 19:22:31.40ID:nP+qIuYQ
print('abcde', end='')
とか
sys.stdout.write('abcde')
とか
面倒なのは許せ
2019/03/06(水) 19:24:34.96ID:2Etc0l5z
>>561 1つのprint で書けば済む話。
2019/03/06(水) 19:30:59.83ID:2Etc0l5z
>>562 ヘェ〜、勉強になる。

>>> print(1,end=''),print(2)
12
(None, None)

このNone はなんで出るの? なんなの?
2019/03/06(水) 19:36:11.71ID:b/S1njE3
>>564
「関数」というのは本来「なんらかの計算をして値を返すもの」
だからどんな関数も必ず何らかの値を返す 単に複数の処理をひとつにまとめただけで値を返す必要のないものでもな
printは画面に文字列を表示するだけのものなので本来は値を返す必要はないんだが
だからってわざわざ関数とは別の仕組みを作るのは面倒臭い
だから「None(値なし)を返す関数」という形式で実装されているわけだ
2019/03/06(水) 19:40:21.23ID:b/S1njE3
ちなみに一応「値を返す関数」と「値を返さない手続き」を別の枠組みとして扱っているプログラミング言語も存在する
VBAのFunctionとSubがそうだ
2019/03/06(水) 20:04:28.41ID:2Etc0l5z
勉強になるな。
下手な入門書より2chの方がためになることも多い。 まだ入門書も適当に読み飛ばしてる段階だけど。
2ch の記事は入門者のモチベーションを高めてくれる。
2019/03/06(水) 21:04:59.01ID:XsTs8xzo
ふーん
2019/03/06(水) 21:45:22.45ID:muSUG44X
>>371
Pydroid3
2019/03/06(水) 23:15:48.67ID:2MUQBf9Y
ツンデレ関数 print()
571デフォルトの名無しさん
垢版 |
2019/03/07(木) 00:29:00.90ID:1sghIh7a
オライリーのPythonチュートリアル分かりにくいい
これを元に資格試験を作ってるんだよね?
572デフォルトの名無しさん
垢版 |
2019/03/07(木) 00:35:34.48ID:FPeGgUJ/
>>571
資格試験ってなんだ?
公式サイトの和訳のやつなら
Web版が随時アップデートされてるよ
2019/03/07(木) 00:53:48.36ID:l1bMfloe
>>571
Pythonに資格試験なんて存在しません
非公式の資格詐欺は知らんけど
574デフォルトの名無しさん
垢版 |
2019/03/07(木) 01:01:50.93ID:1sghIh7a
>>572
>>573
資格試験って言い方が間違ってたらすまん
Python 3 エンジニア認定基礎試験てのを受けるんだけど
それの認定教材がオライリーのやつでwebで見てるんやけど
分かりにくいなって思ったそれだけ
2019/03/07(木) 01:15:05.56ID:k6ZLJER9
>>571 試験範囲がそこから出されると言うだけの話だよ。
公式チュートリアルと変わりない。 それの書き写しがオライリーのだから。

どちらも全くの初心者には難しいと感じるみたいだから、そう言う人は先ずその前に超初心者用的な入門書をいくつか読んだ方が良いのでは?
その類は対して読むのに時間はかからない。 ネットに落ちてるものでも十分。 ただし、自分で書いて練習することが重要。
jupyter でもなんでも良いから確認する環境を作ること。 読むだけでは身につかない。
576572
垢版 |
2019/03/07(木) 01:20:20.63ID:FPeGgUJ/
>>574
洋書特有の文体だから慣れてないと違和感あるけど
言語のチュートリアルとしては良い方の部類だよ
ただ他の言語をマスターしてることが前提のところあるから
ガチ入門者なら国産の本を勧める

NECがスポンサーの試験か・・・
Pythonに力入れてるイメージはないがどうなんだろ
2019/03/07(木) 02:47:07.76ID:7hJ/R58z
       .,、- ' `´  ̄ ̄` ''‐ 、
      ,r'´           .`ヽ、
    /.      -t‐'''l´ .`l'‐t、 .\
   /´.        'lliiiill   lliiii!.  ヽ,
  ./       __  i,_,ノ   .i, ,!    ',  な、なんなんですか…?
  {       (´__,)    ,..., ~ (`ヽ l
  .l       - 、..,_    .l_ i  ,、-"'-、 l  ここ、どこですか…?
  .l           `i  .l,_ソ f´    .l
  ',          ノ     .l,     ,'    どうして私、こんなとこに貼られてるんですか…?
   '、       ,.、-'          .,'
   'i、  ー一 '´            /':,
    l ヽ,               ノ  }
    .l  `‐、,_          ._,.-.'   ,'
    l    `‐- 、,........,..、-‐'`     /
    .\_     ノ  l       ,/
      `'''ー‐ '´   ヽ、   _, -'
                 ̄ ̄
2019/03/07(木) 02:50:45.25ID:bl19yUau
殺人ピンク玉は去れ
2019/03/07(木) 03:49:17.97ID:9XzeaP/N
>>527

Decimal で文字列使う

https://i.imgur.com/QQ0npTS.jpg
2019/03/07(木) 09:12:07.95ID:wzWG3iLc
3000円もする専門書買うよりさ、わからないことがあったらネットで調べれば無料で答えがみつかるよ。
英文でも翻訳ソフト使えばいいだけだし。
ネットで調べても答えが見つけられないやつは、そもそもプログラミングに向いてないんじゃないか。
2019/03/07(木) 09:42:09.79ID:E2eXaClF
公式チュートリアルで良いだろ。

Japanese 指定して一括ダウンロードすればPDFが大量にある
その中のtutorial 開くと日本語訳 tutorial (pdf版)が入手できる
2019/03/07(木) 09:50:54.08ID:IMd+ImAh
ソース嫁からググれカスに移行したが今ではググったらカスばっか。
2019/03/07(木) 11:38:00.92ID:Gktreo0e
LearnPython.orgやCodeacademyみたいにWeb上でインタラクティブシェル開いて
一つ一つお題を実行させる形式のも良いんじゃない。
読んでるだけじゃなかなか身につかないよ
584デフォルトの名無しさん
垢版 |
2019/03/07(木) 14:15:07.44ID:N/cPeE83
>>565
そういえば

>>> print(1)
1

だとNoneは表示されないのに

>>> print(1, end=''),print(2)
12
(None, None)

のときだけ表示されるのは変だと思わない?
2019/03/07(木) 14:31:29.61ID:E2eXaClF
>>584 下はタプルだからだろ。
586デフォルトの名無しさん
垢版 |
2019/03/07(木) 15:40:41.57ID:lgGD2eax
>>584
None単体の場合は表示されないようにインタラクティブシェルがなってる

>>> None
>>>
587デフォルトの名無しさん
垢版 |
2019/03/07(木) 16:03:31.61ID:aOVGrksh
>>564
>>> print(1, end='') or print(2)
12
2019/03/07(木) 16:38:38.56ID:UepKFInK
以下のURLを参考に、フォントファイルから画像を描画しようと思っています
指定した文字がフォントファイルにあるかどうかの判定は、どのようにすれば良いでしょうか?

http://d.hatena.ne.jp/nakamura001/20101228/1293522309

それとも一度描画して、真っ白かどうかで判定・・・しかないでしょうか

pprintで取得したところ、参照のような感じと思いますが、以下のようになりました。
<PIL.Image.Image image mode=RGB size=256x256 at 0x13FF7DEE2E8>
589デフォルトの名無しさん
垢版 |
2019/03/07(木) 16:58:16.83ID:aOVGrksh
freetypeならFT_Get_Char_Index
590デフォルトの名無しさん
垢版 |
2019/03/07(木) 17:01:47.98ID:aOVGrksh
ここも参考になるかな
https://qiita.com/496_/items/f6efb650dcf7e9d2dfe4
2019/03/07(木) 17:34:33.92ID:UepKFInK
>>589-590
ありがとうございます
使い方を教えていただけないでしょうか

引数が二個必要とかいてると思うのですが
https://www.freetype.org/freetype2/docs/reference/ft2-base_interface.html#FT_Get_Char_Index

実際に二個設定するとエラーがでます
import pprint
import freetype
face = freetype.Face('C:/Users/a/font/src.ttc')
pprint.pprint(freetype.FT_Get_Char_Index(face,"33"))

これはエラーになります

import pprint
import freetype
pprint.pprint(freetype.FT_Get_Char_Index("33"))

OSError: exception: access violation writing 0x000001CA5F00FF01

お助け下さい
592デフォルトの名無しさん
垢版 |
2019/03/07(木) 17:49:06.09ID:aOVGrksh
先にinit呼べ
593デフォルトの名無しさん
垢版 |
2019/03/07(木) 17:53:31.19ID:aOVGrksh
FreeTypeの使い方 https://qiita.com/496_/items/6d2540e26d66c9ed5f9a
OpenTypeの仕様前編 https://qiita.com/496_/items/f6efb650dcf7e9d2dfe4
OpenTypeの仕様中編 https://qiita.com/496_/items/4f8327fe741cf0c87736
OpenTypeの仕様後編 https://qiita.com/496_/items/02f2d63fe4bd5603e4dc
594デフォルトの名無しさん
垢版 |
2019/03/07(木) 19:18:41.40ID:aOVGrksh
FONT_PATH = b'mikaP.ttf'

ft2 = ctypes.windll.freetype
ft2lib = ctypes.c_void_p()
ft2.FT_Init_FreeType(ctypes.byref(ft2lib))
face = ctypes.c_void_p()
font_path = ctypes.create_string_buffer(FONT_PATH)
ft2.FT_New_Face(ft2lib, font_path, 0, ctypes.byref(face))
idx = ft2.FT_Get_Char_Index(face, b'A'[0])
print(f'{idx:04x}') # 0023
idx = ft2.FT_Get_Char_Index(face, ord('あ'))
print(f'{idx:04x}') # 07bd
ft2.FT_Done_Face(face)
ft2.FT_Done_FreeType(ft2lib)

一応動いた
595デフォルトの名無しさん
垢版 |
2019/03/07(木) 19:21:06.42ID:aOVGrksh
idx = ft2.FT_Get_Char_Index(face, ord('鷗'))
print(f'{idx:04x}') # 38c1
idx = ft2.FT_Get_Char_Index(face, ord('𠮟'))
print(f'{idx:04x}') # 0000
2019/03/07(木) 20:31:42.10ID:VtililUQ
>>579
これ何使ってんの?
スマホだよね?
2019/03/07(木) 20:32:20.69ID:VtililUQ
>>580
いい本に出逢えばそれに越したことはない
2019/03/07(木) 21:37:32.00ID:D1nw//Ty
>>596

Pythonista 3
iPad, iPhone のアプリ
599デフォルトの名無しさん
垢版 |
2019/03/08(金) 01:56:52.91ID:FktPmjXq
i = 10
def num(arg=i):
print(arg)

i = 7
num()
iはどちらもグローバル変数ですよね?
関数の中身変えて7の方を出力させることってできますか?
2019/03/08(金) 02:04:22.64ID:Nky3or7z
def num(arg=None):
arg == i
print(arg)
2019/03/08(金) 02:05:04.82ID:Nky3or7z
def num(arg=None):
_arg = i
_print(arg)
の誤り
2019/03/08(金) 02:15:56.15ID:5FsfaYFV
>>599

https://i.imgur.com/2LoxSbi.jpg
2019/03/08(金) 02:20:26.52ID:5FsfaYFV
>>601

https://i.imgur.com/FNgAPWr.jpg
604デフォルトの名無しさん
垢版 |
2019/03/08(金) 02:47:32.14ID:FktPmjXq
>>602
ありがとうございます
でも7になる理由がわかりません。
どういった処理になるのか教えて欲しいです、
2019/03/08(金) 06:55:10.03ID:49yeJutG
>>598
ありがとー
2019/03/08(金) 11:24:52.69ID:enrIbZX0
>>604
i = 10
def num(arg=i):
 print(arg)

i = 7
num()

この場合は、def を定義するときにarg= でarg のデフォルト値をセットする。
この時の i は 10だろ。 まだ下の行は実行されていないんだから。

i = 10
def num(arg=None):
 arg == i
 print(arg)

i = 7
num()

この時のnum内の実行文は実行されたときに動くんだから、i=7 がセットされた値を参照する事になる。
関数のデフォルト値は関数を定義したときに決定される。 関数内の実行文は実行時に決定される。
2019/03/08(金) 11:33:20.13ID:5FsfaYFV
>>606
>この時の i は 10だろ。 まだ下の行は実行されていないんだから。


実行されるときの i は7だろ。
2019/03/08(金) 12:03:17.67ID:JVGfVyzo
問題はprint(arg)が実行される時のargの値でしょ?
def num(arg=i):
の時に、argにはiへの参照が渡されるんじゃ無くて、iの値が渡されるってだけ。
2019/03/08(金) 13:20:03.26ID:enrIbZX0
>>607 def と言うのが何かを考えよう。 def で関数を定義する。その時点でパラメータのデフォルト値も確定する。
つまりパラメータのデフォルト値は関数の定義時点で確定する。 実行時ではない。 デフォルト値がころころ変わったりするものか。
2019/03/08(金) 13:35:58.82ID:5FsfaYFV
それこの実行結果の前でも同じこと言えんの?

https://i.imgur.com/LmkiE6A.jpg
2019/03/08(金) 13:36:28.88ID:0Uig+6Kq
仕様ですな

デフォルト引数の式は関数が定義されるときにただ一度だけ評価され、同じ "計算済みの" 値が呼び出しのたびに使用されることを意味します。

https://docs.python.org/ja/3.6/reference/compound_stmts.html#function-definitions
2019/03/08(金) 13:39:30.34ID:0Uig+6Kq
>>610
デフォルト引数じゃないしw
引数渡しちゃってるしw
2019/03/08(金) 13:57:33.85ID:JVGfVyzo
>>610
真面目にやってんならこれは恥ずかしい。
2019/03/08(金) 14:02:30.13ID:j3nR25S+
ガイガイ音頭踊っとれや…(嘆息)
2019/03/08(金) 14:12:04.85ID:1m9JjIZU
おもしろかったぞw
2019/03/08(金) 14:51:41.35ID:enrIbZX0
>>610 デフォルトが解っていないみたいだな。 これとまったく同じことなんだぞ。

def num(arg=10)
 print(arg)

print(num(7)) #> 7
print(num()) #> 10
2019/03/08(金) 14:53:37.91ID:enrIbZX0
>>616 printが2重になってたな。
2019/03/08(金) 15:17:08.58ID:E9FXn3JR
勉強になったな!
619デフォルトの名無しさん
垢版 |
2019/03/08(金) 16:07:05.72ID:eYLLL/Dr
よくはまるのは default=[] にしたとき
2019/03/08(金) 16:35:59.46ID:DUow6Thg
二次元配列からの取り出しで、

X = hoge[:, [2,3]]
Y = hoge[:, 0]

って書かれている時、具体的にどこからどこまで取り出しているのでしょうか?
2019/03/08(金) 17:17:55.67ID:54yPjEY7
>>610

def と言うのが何かを考えよう。 def で関数を定義する。その時点でパラメータのデフォルト値も確定する。
つまりパラメータのデフォルト値は関数の定義時点で確定する。 実行時ではない。 デフォルト値がころころ変わったりするものか。

つまり、関数定義時点で、i=10 とデフォルト値が確定する。実行時ではない。デフォルト値が、10から7にころころ変わったりするものか。だから、結果は10なんだよ
…ってあれ?
2019/03/08(金) 17:20:46.97ID:54yPjEY7
仕様ですな

デフォルト引数の式は関数が定義されるときにただ一度だけ評価され、(つまり10と評価)同じ "計算済みの" 値(つまり10)が呼び出しのたびに使用されることを意味します。

https://docs.python.org/ja/3.6/reference/compound_stmts.html#function-definitions

見事に結果が違うな
下手に言葉でルール説明しなくていいから、インタプリタに動作アルゴリズムをそのまま公開してほしいわ
2019/03/08(金) 17:41:30.86ID:SfpbmzlL
ちょっと何言ってんだか分かんないw
624デフォルトの名無しさん
垢版 |
2019/03/08(金) 17:48:01.52ID:+fF7voFW
>>620
Xは2列目と3列目
Yは0列目
2019/03/08(金) 18:34:43.25ID:qP6cz7Aj
>>622 言語リファレンスは明確に仕様を定義するだけのものだから、理解させるためのものではない。 絶対に間違いがあってはならないから下手な説明はない方が良い。
2019/03/08(金) 19:17:40.56ID:1m9JjIZU
>>622
>>下手に言葉でルール説明しなくていいから
オイオイ、これ以上分かりやすい説明ないだろう。しかも公式リファレンスだよ

>>インタプリタに動作アルゴリズムをそのまま公開してほしいわ
意味不明w
2019/03/08(金) 20:03:58.48ID:IGhZvnlG
公式の説明と実際の動作が一致しないんじゃなあ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況