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

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

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

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

Q&A

解決済

2回答

5664閲覧

【python】C言語のように関数を「void 関数名」 などと定義して関数の処理を最後に書くことはできるか

series207

総合スコア49

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

0グッド

1クリップ

投稿2020/02/21 00:57

#解決したいこと
関数を用いたプログラムを作っているのですが、C言語のように最初に「void 関数名」 などと定義して関数の処理を最後に書くことはできますか?

#該当のソースコード

python

1int add(c,d) 2 3a=5 4b=3 5f=add(a,b) 6print(f) 7 8def add(c,d): 9 e=c+d 10 return e 11

#上のコードと同様の処理を行うCプログラム

C

1#include <stdio.h> 2 3int add(c,d); 4 5int main(void) 6{ 7 int a = 5, b = 3; 8 9 int f = add(a, b); 10 printf("%d\n", f); 11} 12 13int add(c, d) 14{ 15 int e = c + d; 16 return e; 17}

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

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

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

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

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

maisumakun

2020/02/21 01:05

何のために行いたいのでしょうか。
series207

2020/02/21 02:29

「何のために」というよりかは「単純に疑問に思ったから」質問したわけです。それぞれの言語の性質を理解するという目的もあるわけです。 プログラミング学習においては、ただその処理が実現できたから終わるのではなく、「ここをこう書き換えても同じ処理が実現できるのでは」というように疑問に思い、実際にプログラムを機能変更することが大事で、そう思える人が良いプログラムを書くことができます。
Zuishin

2020/02/21 02:34

そう思える人は行き当たりばったりで質問するのではなく、まず自分で言語機能を学ぶのでは?
maisumakun

2020/02/21 02:56

> 「単純に疑問に思ったから」質問したわけです。 もちろん、それは正当な理由かと思います。 意図を確認した理由としては、「(Aをしたいから)Bをするにはどうすればいいですか?」という質問で、Aのほうがわかっていれば「Bは使わずにCでやったほうがいい」という展開となるケースもあるためです。
series207

2020/02/21 03:30

わかりました、ありがとうございます。
Zuishin

2020/02/21 03:33

基本的な知識のない状態で質問しているため、質問とベストアンサーがちぐはぐという残念な結果になっています。これでは良いプログラムは書けません。
guest

回答2

0

ベストアンサー

関数が呼び出された時点で実体が定義されていなければなりません。
次のように主処理を関数に括れば良いでしょう。

Python

1def main(): 2 a = 5 3 b = 3 4 f = add(a, b) 5 print(f) 6 7def add(c, d): 8 e = c + d 9 return e 10 11main()

あるいはadd関数を外部モジュールで定義し、インポートします。

Python

1"""module.py""" 2 3def add(c, d): 4 e = c + d 5 return e

Python

1from module import add 2 3a = 5 4b = 3 5f = add(a, b) 6print(f)

投稿2020/02/21 01:03

編集2020/02/21 01:05
LouiS0616

総合スコア35668

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

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

LouiS0616

2020/02/21 01:23

Cの場合 コンパイル ⇒ リンク と段階が分かれていて、コンパイル時には型だけ分かれば大丈夫なのです。
series207

2020/02/21 02:31

ご回答ありがとうございます。解決しました!
hayataka2049

2020/02/21 20:42

> Cの場合 コンパイル ⇒ リンク と段階が分かれていて、コンパイル時には型だけ分かれば大丈夫なのです。 Pythonもコンパイル時には名前だけわかっていれば構文解析してバイトコードまでは吐けるのでは? 直後の実行のときに名前が見つからなければエラーになるだけで。
LouiS0616

2020/02/22 02:22 編集

@hayataka2049 さん コンパイル時には構文エラー以外弾かれないような気がするのですが、どうでしょう。 とりあえず完全な、実行時にもエラーを吐かないコードを前提に置かせて下さい。
guest

0

C言語のように最初に「void 関数名」 などと定義して関数の処理を最後に書くことはできますか?

できません。CとPythonでは文法が異なるため、同じことができるとは限りません。


ヒンティングをする程度で、厳密に型を制限することはできなさそうですが、以下のように記載できます。

https://docs.python.org/ja/3/library/typing.html

Python

1def add(c:int,d:int) -> int: 2 e=c+d 3 return e 4 5add(1, 2) 6# => 3 7 8add("foo", "bar") 9# => "foobar" 10# 注:エラーにならない

投稿2020/02/21 01:01

編集2020/02/21 01:11
kazto

総合スコア7196

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

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

kazto

2020/02/21 01:03

調べ直してみましたが、新しいPythonではできるようですね。回答を修正します。
kazto

2020/02/21 01:13 編集

ただし、typingはPython3.5以降からの機能です。
series207

2020/02/21 02:31

ご回答ありがとうございます。解決しました!
LouiS0616

2020/02/21 02:36

この方法だと『関数の処理を最後に書く』ことはできませんが、それで良いのですか?
Q71

2020/02/21 03:20

え?「宣言と定義を分けたい」という質問だと思ったのですが、違うってこと??
kazto

2020/02/21 09:58

誤読していたようです。失礼しました…
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問