Computer368106 views
中学英語811710 views
高校生物551766 views
りんご209490 views
高校日本史190571 views
MathPython497343 views
世界の国564520 views
いろは3010814 views
中学社会668760 views
LaTeX962153 views
Help
Tools
NewsSpreadsheetCalendarBookkeepingMarkdown TablesSlidesTier ListPen ToolIllustrationCrayonWatercolorPixel ArtASCII ArtPerspectiveEndless StairsGraphMind MapER DiagramFamily TreeMemeCurved TextImage EditorMosaicRetro FilterPencil SketchSwirl EffectLine ArtOCR/HighlighterMakeup EditorFaviconVideo TrimmerScrolling VideoVideo TitleColor PickerColor ExtractorBonfireFireworksWater RippleWater SplashBreaking GlassWood GrainMarble TextureCSS ButtonIcon MakerBar ChartGrouped Bar ChartStacked Bar ChartPie ChartLine ChartArea ChartStacked Area ChartScatter Plot3D Bar Chart3D Pie ChartBar Chart RaceBubble ChartPopulation PyramidPictogramEarningsCandlestick ChartInvestment RiskMortgage SimulatorCalculatorMatrix CalculatorFunction GraphPolynomial ExpansionVenn DiagramField VisualizerRubik's Cube Group TheoryTraveling SalesmanVoronoi and DelaunayFractalColumn ArithmeticDraw Math FiguresArithmetic AnimationArithmetic Word ProblemsCounting with Tree DiagramsCube NetsRolling DiceCross SectionsMotion PathMechanicsWavesElectromagnetic WavesCapacitorsLight and LensesThermodynamicsHow Semiconductors WorkMolecular StructuresAtomic OrbitalsElectrochemical CellsChemical EquilibriumCrystal LatticesBuffer pHOrganic Reaction MapPeriodic TableComplex IonsDNA Double HelixCell DivisionMembrane ChannelsNerve ImpulseMuscle ContractionHormones and HomeostasisRock ClassificationWeatherConstellationsSolar and Lunar Eclipses3D ModelingFloor PlanSeismic StructuresIntersection TurnMaglevCooking AnimationOrigamiLive Viewer CountGeoJSON MapRailway MapPopulation MapCrime MapLand Price MapSchool MapShrine and Castle MapHouse of Representatives MapWord MapSolitaireReversiHakoiri MusumeChessHamburgerRippleSlide Puzzle MakerNeon PinballNovel MakerJapanese Typing PracticePiano Score EditorMusic TheoryShogi StrategyPiano Rhythm Game

English

Python のキーワード専用引数と位置専用引数(/ と *)

Python 3.8 から、位置専用引数(/)とキーワード専用引数(*)を使って、引数の渡し方を制限できるようになりました。

キーワード専用引数(*)

  • の後に定義された引数は、キーワードでしか渡せません。
def greet(name, *, greeting="Hello"):
    print(f"{greeting}, {name}!")

greet("Alice")                    # OK
greet("Alice", greeting="Hi")     # OK
greet("Alice", "Hi")              # エラー

呼び出し側が引数名を明示するため、コードの可読性が上がります。

位置専用引数(/)

/ の前に定義された引数は、位置でしか渡せません。

def power(base, exp, /):
    return base ** exp

power(2, 3)           # OK: 8
power(base=2, exp=3)  # エラー

内部実装の引数名を変更しても呼び出し側に影響しないため、ライブラリ設計で有用です。

組み合わせて使う

/ と * を組み合わせると、3 種類の引数を定義できます。

def func(pos_only, /, standard, *, kw_only):
    print(pos_only, standard, kw_only)

func(1, 2, kw_only=3)           # OK
func(1, standard=2, kw_only=3)  # OK
func(pos_only=1, standard=2, kw_only=3)  # エラー
位置引数の種類渡し方
/ の前位置専用位置のみ
/ と * の間通常どちらでも可
* の後キーワード専用キーワードのみ

API 設計の際に、引数の渡し方を明確にすることでミスを防げます。