質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
OS

OS(オペレーティングシステム)は、システムソフトウェアの一種であり、一般的に、ハードウェアを直接的に管理・操作する最も中心的な機能を有するソフトウェアがオペレーティングシステムとして呼ばれます。

パス

パス(path)はファイルシステムの場所(階層)を明示したものです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

1回答

733閲覧

Pythonの引数について教えてください。

kabgon

総合スコア6

OS

OS(オペレーティングシステム)は、システムソフトウェアの一種であり、一般的に、ハードウェアを直接的に管理・操作する最も中心的な機能を有するソフトウェアがオペレーティングシステムとして呼ばれます。

パス

パス(path)はファイルシステムの場所(階層)を明示したものです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2022/01/09 12:04

前提・実現したいこと

現在、pythonを[PythonでかなえるExcel作業効率化]という書籍にて学習中なのですが、
その中で理解できないコード内容がありましたので、質問させていただきました。

コードの簡単な内容:
とあるフォルダに格納されている複数のexcelファイルを自動的にマージし、分析できる様にする。
今回質問したいことに該当するのは、とあるフォルダのパスを取得し、その中のすべてのexcelファイル
を取得する という部分になります。

質問したいこと:
「なぜpathは定義していないのに、(引数に指定されているだけで)相対パスとして機能しているのか」
↓のコードにて
最初に[folder_path]に相対パスを定義しています。 なので、次に登場する [get_sales_data]関数
の引数には(folder_path)を使わないといけないのでは?pathは定義していないからエラーでるのでは?
と思っていました。しかし、以下のコードを実行してみると、エラーなく、実行されました。
このpathが一体何なのかが、理解できず、困っています。試しに関数内でprint(path)としてみると、
'.\excel'とfolder_pathで定義したものが返ってきました。
pathは引数なだけでなにも定義していないのに、なぜ勝手に相対パスとなっているのでしょうか。。
教えていただけると幸いです。

該当のソースコード

import os

folder_path='.\excel'

import pandas as pd

def get_sales_data(path):

excel_files=os.listdir(path) list_sales_data=[] for excel_file in excel_files: if '売上' in excel_file: sales_data=pd.read_excel(path+excel_file) list_sales_data.append(sales_data)

python

1ソースコード

試したこと

書籍を一から見直しましたが、、具体的な記述がなく理解できませんでした。

補足情報(FW/ツールのバージョンなど)

python3

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

書籍を一から見直しましたが、、具体的な記述がなく理解できませんでした。

前提とする読者は書いてませんでしたか?プログラミングが全く初めての人は対象外なのかもしれません。

関数定義の括弧内に書くものは「仮引数」といいますが、
仮引数というのは、関数を呼び出す時に指定する物を受け取るものです。

Python

1def foo(x): 2 print(x) 3 4foo(123) 5 6a=999 7foo(a)

xが仮引数、foo(123)123foo(a)aを実引数と言います。
仮引数の場所にこのように変数名だけが書いてある時は、対応する位置関係にある実引数の値が仮引数にコピーされます。

数学の関数、引数と全く同じです。

Suugaku

1f(x)=x*2+3 2 3y1=f(123) 4 5a=999 6y2=f(a)

投稿2022/01/09 12:20

otn

総合スコア84423

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kabgon

2022/01/09 14:04

otnさん ご回答ありがとうございました。 ご説明いただいた内容で理解することができました。 関数を定義する際には仮の引数を()内に規定し、 関数を使用する際に具体的な実数を()内に記述すればいいということですね。 書籍をもう一度見直すと、コードの最後に sales=get_sales_data(folder_path) という様な記述があり、ここでfolder_pathという実数を指定していました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問